zoukankan      html  css  js  c++  java
  • tcp文件下载

    服务器端

     1 import socket
     2 
     3 
     4 def send_file_2_client(new_client_socket,client_addr):
     5     # 接收信息
     6     file_name = new_client_socket.recv(1024).decode("utf-8")
     7 
     8     print("客户%s要下载的文件是:%s" % (str(client_addr), file_name))
     9 
    10     # 定义发送的内容
    11     send_content = None
    12 
    13     # 打开文件
    14     try:
    15         f = open(file_name,"rb")
    16         send_content = f.read()
    17         f.close()
    18     except Exception as ret:
    19         print("没有该文件信息")
    20 
    21     # 不做判断 如果没有该文件会报错:TypeError: a bytes-like object is required, not 'NoneType'
    22     if send_content:
    23         new_client_socket.send(send_content)
    24 
    25 
    26 def main():
    27     # 创建套接字
    28     tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    29 
    30     # 绑定端口
    31     tcp_server_socket.bind(("",7788))
    32 
    33     # 被动监听
    34     tcp_server_socket.listen(128)
    35 
    36     while True:
    37         # 接收客户端信息
    38         new_client_socket,client_addr = tcp_server_socket.accept()
    39 
    40         # while True:
    41         send_file_2_client(new_client_socket,client_addr)
    42 
    43 
    44         # 关闭
    45         new_client_socket.close()
    46     # 关闭套接字
    47     tcp_server_socket.close()

    客户端

    import socket
    
    
    def main():
        # 创建
        tcp_client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    
        # 连接服务器
        # ip和port可以写死 也可以用input() 输入
        server_ip = input("请输入服务器IP:")
        server_port = int(input("请输入端口:"))
        tcp_client_socket.connect((server_ip,server_port))
    
        # 发送信息
        file_name = input("请输入要下载的文件名:")
        tcp_client_socket.send(file_name.encode("utf-8"))
    
        # 接收对方发来的数据
        recv_data = tcp_client_socket.recv(1024)
        print(recv_data)
        if recv_data:
            with open("[接收]" + file_name,"wb") as f:
                f.write(recv_data)
    
        # 关闭套接字
        tcp_client_socket.close()
  • 相关阅读:
    系统学Python-01
    pandas(二)
    matplotlib
    Python数据分析-初识numpy、pandas、scipy、matplotlib和Scikit-Learn等数据处理库
    Python进行读取或写入等文件操作时的路径问题
    pandas(一)
    00 Python及第三方库的安装问题
    sorted ()函数和列表中的sort()函数
    git 获取branch名和commit id
    查看Android log 和TEE Log
  • 原文地址:https://www.cnblogs.com/yifengs/p/11377781.html
Copyright © 2011-2022 走看看