利用socket创建文件下载过程

利用Python中的socket进行文件下载过程

客户端代码如下:

  1. import socket
  2.  
  3. def main():
  4.     # 创建套接字
  5.     tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  6.     dest_ip = input("请输入ip:")
  7.     dest_port = int(input("请输入port:"))
  8.     tcp_client_socket.connect((dest_ip, dest_port))
  9.     file_name = input("请输入文件名:")
  10.     tcp_client_socket.send(file_name.encode("utf-8"))
  11.     recv_data = tcp_client_socket.recv(1024)
  12.     print(recv_data)
  13.     # 对是否收到数据进行判断,若为空不创建新文件
  14.     if recv_data:
  15.         with open("[新]" + file_name, "wb") as f:
  16.             f.write(recv_data)
  17.     tcp_client_socket.close()
  18. if __name__ == '__main__':
  19.     main()

服务器代码如下:

  1. import socket
  2.  
  3. def main():
  4.     # 创建套接字
  5.     tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  6.     tcp_server_socket.bind(("", 8080))
  7.     tcp_server_socket.listen(128)
  8.     new_socket_client, client_addr = tcp_server_socket.accept()
  9.     file_name = new_socket_client.recv(1024).decode("utf-8")
  10.     print("客户地址: %s" % str(client_addr))
  11.     # 判断文件名称
  12.     file_content = None
  13.     try:
  14.         f = open(file_name, "rb")
  15.         file_content = f.read()
  16.         f.close()
  17.     except Exception as res:
  18.         print("文件名称不正确")
  19.     if file_content:
  20.         new_socket_client.send(file_content)
  21.     new_socket_client.close()
  22.     tcp_server_socket.close()
  23.  
  24. if __name__ == '__main__':
  25.     main()

为了尝试文件是否传输成功,一开始用一个xx.py的文件进行实验,结果多次都没产生新文件,以为代码有错,查了半天。结果发现是那个文件是个空文件,就不会创建新文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值