美文网首页
17-网络编程作业未写完

17-网络编程作业未写完

作者: 李小萌mmm | 来源:发表于2018-08-07 20:40 被阅读0次

    写一个两个人的聊天系统,可以实现双向聊天功能。
    如果发送的是普通的文字就直接打印,如果发送的文字是’拜拜’就关闭连接,
    如果是一个网络地址就获取数据(保存到文本文件中),如果是图片地址就下载图片到本地

    服务器

    import socket
    
    
    
    
    if __name__ == '__main__':
        server = socket.socket()
        server.bind(('10.7.181.110', 10001))
        server.listen(50)
        print('正在等待连接')
        while True:
    
            conversation, addr = server.accept()
            print(addr)
    
            while True:
                str1 = input('>>>:')
                conversation.send(str1.encode(encoding='utf-8'))
                data = conversation.recv(1024)
                if data == '拜拜':
                    print('会话结束,连接关闭')
                    conversation.close()
                    break
                print(data.decode(encoding='utf-8'))
    
            '''
            with open('./bomb.png', 'rb') as f:
                data = f.read()
            conversation.send(data)
            '''
    
    
            conversation.close()
    

    客户端

    import socket
    def save_image(data):
    
        # 接收数据,因为图片数据较大,可能会分多次发送
        image_data = bytes()  # 创建一个空的bytes用来保存整个图片数据
        while data:
            image_data += data
            data = client.recv(1024)
        filename = input('你想保存的文件名字:')
        # 保存图片到本地
        with open(filename, 'wb') as f:
            f.write(image_data)
    
        client.close()
    
    
    
    
    
    if __name__ == '__main__':
        while True:
            client = socket.socket()
            client.connect(('10.7.181.110', 10001))
            data = client.recv(0)
    
            #判断是否是图片
            if isinstance(data,bytes):
                save_image(data)
    
            while True:
                data = client.recv(1024)
                data = data.decode(encoding='utf-8')
                if data == '拜拜':
                    print('会话结束,连接关闭')
                    client.close()
                    break
                print(data)
    
                str1 = input('>>>:')
                client.send(str1.encode(encoding='utf-8'))
    
    
    
    
    

    相关文章

      网友评论

          本文标题:17-网络编程作业未写完

          本文链接:https://www.haomeiwen.com/subject/zyqzvftx.html