您的位置:首页 > 编程语言 > Python开发

python下的TCP传输(分别做服务器与客户端)

2018-11-20 20:07 141 查看

使用TCP进行文件传输

TCP作为客户端时:

代码如下

[code]  1 import socket
2
3 def main():
4         #1.创建套接字
5         tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
6
7         #2.绑定服务器的ip,port
8         server_ip = input("请输入服务器的ip")
9         server_port = int(input("请输入服务器的port"))
10
11         #3.链接服务器
12         tcp_socket.connect((server_ip,server_port))
13
14         #4.输入需要下载的文件名
15         file_name = input("请输入要下载的文件名称")
16
17         #5.将需要下载的文件名给服务器
18         tcp_socket.send(file_name.encode("utf-8"))
19
20         #6.接收下载的数据
21         down_data = tcp_socket.recv(1024)
22
23         #7.接收到的数据保存到文件中(文件的操作)
24         with open("[附件]"+file_name,"wb") as f:
25                 f.write(down_data)
26
27         #8.关闭套接字
28         tcp_socket.close()
29
30
31
32
33 if __name__ == "__main__":
34         main()

对代码进行测试时需要下载网络调试助手

结果如下:

1.先连接服务器,服务器的ip和端口即为测试所用网络地址的ip与端口,继而输入要进行下载的文件的名称

2.网络助手显示客户端所要下载的文件名称,并传递回客户端数据

3.在1中可看到生成了11文件,2中显示发送的信息为aa,打开11进行验证

传输完成

TCP分别作为服务器,与客户端时,两者进行文件的下载

服务器代码如下

[code]  1 import socket
2
3 def send_data(new_client,client_addr):
4
5         #1.接收客户端要下载的文件名
6         down_file_name = new_client.recv(1024).decode("utf-8")
7         print("客户端%s要下载的文件名为%s"%str(client_addr,down_file_name))
8
9         #2.用文件名进行查找返回信息给客户端(读操作)
10
11         f_read_data = None
12         try:
13                 f = open(down_file_name,"rb")
14                 f_read_data = f.read()
15                 f.close()
16
17         except Exception as result:
18                 print("没有文件%s"%down_file_name)
19
20         #发送文件的数据给客户端
21         if f_read_data:
22                 new_client.send(f_read_data)
23
24
25 def main():
26
27         #1.创建套接字
28         tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
29
30         #2.绑定ip,port(tcp为面向链接),绑定本地时可不用写ip
31         tcp_socket.bind(("",7788))
32
33         #3.监听listen
34         tcp_socket.listen(128)
35
36         while True:
37
38                 #4.接收accept
39                 new_client,client_addr = tcp_socket.accept()
40
41                 #5.下载文件
42                 send_data(new_client,client_addr)
43
44                 #6.关闭
45                 new_client.close()
46
47         tcp_socket.close()
48
49
50
51 if __name__ == "__main__":
52
53         main()

客户端代码同代码1

测试结果

1.tcp作为客户端连接服务器,并输入要下载的文件名

2,tcp作为服务器返回信息,客户端所要下载文件分为存在或不存在

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: