用python实现文件下载客户端和服务器

文件下载客户端

import socket
def main():
    #创建套接字
    tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    #连接服务器
    dest_ip = input("请输入下载服务器的ip:")
    dest_port = int(input("请输入下载服务器的port:"))
    tcp_socket.connect((dest_ip, dest_port))
    #将文件名发送给服务器
    down_file_name = input("请输入要下载的文件名字:")
    tcp_socket.send(down_file_name.encode("utf-8"))
    #接收文件数据
    recv_data = tcp_socket.recv(1024)
    #保存接受的数据到文件中
    if recv_data:
        with open("[新]" + down_file_name, "wb") as f:
            f.write(recv_data)
    #关闭套接字
    tcp_socket.close()

if __name__ == '__main__':
    main()

文件下载服务器

import socket
def send_file_2_client(new_client_socket,client_addr):
    #接受客服端发送过来需要下载的文件名
    file_name = new_client_socket.recv(1024).decode("utf-8")
    print("客户端(%s)需要下载文件:%s" %(str(client_addr),file_name))
    file_content = None
    # 打开文件,读取数据
    try:
        f = open(file_name, "rb")
        file_content = f.read()

        f.close()
    except Exception as ret:
        print("没有要下载的文件(%s)" % file_name)

    #发送文件到客户端
    if file_content:
        new_client_socket.send(file_content)
def main():
    #创建套接字
    tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    #绑定bind
    tcp_server_socket.bind(("", 8082))
    #监听
    tcp_server_socket.listen(128)
    while True:
        #等待客户端连接 accept
        new_client_socket,client_addr = tcp_server_socket.accept()
        #调用发送文件函数,完成为客户端服务
        send_file_2_client(new_client_socket,client_addr)
        #关闭套接字
        new_client_socket.close()
    tcp_server_socket.close()


if __name__ == '__main__':
    main()

你可能感兴趣的:(python,网络,tcp,文件下载)