码迷,mamicode.com
首页 > 其他好文 > 详细

TCP案例——客户端循环向服务器下载文件

时间:2020-04-08 12:04:34      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:except   server   效果   soc   png   open   cep   lis   with   

效果:

客户端                                                                                                服务器

技术图片技术图片

客户端代码:

 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案例——客户端循环向服务器下载文件

标签:except   server   效果   soc   png   open   cep   lis   with   

原文地址:https://www.cnblogs.com/zuzhuangmengxiang/p/12658745.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!