TCP案例——客户端循环向服务器下载文件
Posted zuzhuangmengxiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP案例——客户端循环向服务器下载文件相关的知识,希望对你有一定的参考价值。
效果:
客户端 服务器
客户端代码:
1 import socket 2 3 4 def main(): 5 while True: 6 # 1.创建套接字 7 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 8 9 # 2.连接服务器 10 # dest_ip = input("请输入服务器的IP:") 11 # dest_port = int(input("请输入服务器的端口:")) 12 13 client_socket.connect((‘192.168.2.100‘, 7788)) 14 15 # 3.向服务器发送要下载的文件 16 17 file_name = input("请输入您要下载的文件名:") 18 client_socket.send(file_name.encode(‘utf-8‘)) 19 20 # 4.接收文件——recv内单位是字节 21 recv_data = client_socket.recv(1024) 22 # print(recv_data) 23 24 # 5.写入文件 25 # 如果文件有内容才写入文件 26 if recv_data: 27 with open(‘[接收]‘ + file_name, ‘wb‘) as f: 28 f.write(recv_data) 29 print("文件下载完成") 30 else: 31 print("要下载的文件不存在或为空。") 32 # 6.关闭套接字 33 client_socket.close() 34 35 36 if __name__ == ‘__main__‘: 37 main()
服务器代码:
1 import socket 2 3 4 def main(): 5 while True: 6 # 1.创建监听套接字 7 tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 8 9 # 2.绑定IP和Port 10 tcp_server_socket.bind((‘‘, 7788)) 11 12 # 3.设置为被动监听 13 tcp_server_socket.listen(128) 14 15 try: 16 while True: 17 # 4.等待客户端连接 18 print(‘等待客户端连接中......‘) 19 client_socket, client_adress = tcp_server_socket.accept() 20 print(‘已连接客户端 %s‘ % str(client_adress)) 21 22 # 5.获取客户端需要的文件并回传给客户端 23 file_name = client_socket.recv(1024) 24 print("%s 客户端需要下载的文件为:%s" % (str(client_adress), file_name.decode(‘utf-8‘))) 25 26 # 如果有,将文件回传给客户端。没有则打印文件不存在 27 file_content = None 28 try: 29 f = open(file_name, ‘rb‘) 30 file_content = f.read() 31 print("已发送文件给客户端") 32 except Exception as ent: 33 print("文件不存在!") 34 if file_content: 35 client_socket.send(file_content) 36 37 # 6.关闭套接字 38 client_socket.close() 39 except: 40 print("客户端异常断开") 41 tcp_server_socket.close() 42 43 44 if __name__ == ‘__main__‘: 45 main()
以上是关于TCP案例——客户端循环向服务器下载文件的主要内容,如果未能解决你的问题,请参考以下文章