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

使用TCP进行文件传输

TCP作为客户端时:

代码如下

  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与端口,继而输入要进行下载的文件的名称

python下的TCP传输(分别做服务器与客户端)_第1张图片

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

python下的TCP传输(分别做服务器与客户端)_第2张图片

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

python下的TCP传输(分别做服务器与客户端)_第3张图片

传输完成

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

服务器代码如下

  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作为服务器返回信息,客户端所要下载文件分为存在或不存在

 

 

你可能感兴趣的:(高级,python,网络通信)