• 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()
  • 相关阅读:
    html5 表單元素
    html5 表單輸入類型
    html5 服務器發送事件
    html5 web workers
    html5應用緩存
    html5 sessionStorage VS loaclStorage
    html5地理定位
    html5 画布和SVG的差别
    html5 SVG
    SQL-22 统计各个部门对应员工涨幅的次数总和,给出部门编码dept_no、部门名称dept_name以及次数sum
  • 原文地址:https://www.cnblogs.com/yifengs/p/11377781.html
Copyright © 2020-2023  润新知