美文网首页
下载文件

下载文件

作者: 程序设计法师 | 来源:发表于2019-04-03 10:50 被阅读0次
    import socket
    
    
    def main():
        # 创建套接字
        tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 获取服务器的ip port
        dest_ip = input("请输入下载服务器的ip")
        dest_port = int(input("请输入下载服务器的port"))
        # 连接服务器
        tcp_socket.connect((dest_ip, dest_port))
        # 获取下载的文件名字
        downloadFileName = input("请输入要下载的文件的名字:")
        # 将要下载的文件名字发送到服务器
        tcp_socket.send(downloadFileName.encode("utf-8"))
        # 接收文件中的数据
        recv_data = tcp_socket.recv(1024 * 1024)
        # 如果接收到数据
        if recv_data:
            # 保存接收到的数据到一个文件中
            with open("[新]"+downloadFileName, "wb") as f:
                f.write(recv_data)
        # 关闭套接字
        tcp_socket.close
    
    
    if __name__ == "__main__":
        main()
    
    E:\python_project\NetWork\venv\Scripts\python.exe E:/python_project/NetWork/DownloadFile.py
    请输入下载服务器的ip192.168.29.2
    请输入下载服务器的port8080
    请输入要下载的文件的名字:1.py
    
    Process finished with exit code 0
    
    文件下载.png
    接收数据.png
    自己实现文件服务器端
    import socket
    
    
    def send_file_2_client(client_addr, new_client_socket):
        # 接收客户端发过来的要下载的文件名
        file_name = new_client_socket.recv(1024).decode("utf-8")
        print("客户端要下载的文件是:%s" % (file_name))
        file_content = None
        # 打开这个文件,读取数据
        try:
            f = open(file_name, "rb")
            file_content = f.read()
            f.close()
        except Exception as ret:
            print("没有要下载的文件")
        if file_content:
            # 发送文件的数据给客户端
            new_client_socket.send(file_content)
    
    
    def main():
        # 创建套接字
        tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 绑定本地信息
        tcp_server_socket.bind(("", 8089))
        # 让默认套接字主动变为被动
        tcp_server_socket.listen(128)
        while True:
            # 等待客户端的连接
            new_client_socket, client_addr = tcp_server_socket.accept()
            # 调用发送文件函数,完成为客户端服务
            send_file_2_client(client_addr, new_client_socket)
            # 关闭套接字
            new_client_socket.close()
        tcp_server_socket.close()
    
    
    if __name__ == "__main__":
        main()
    

    首先打开服务端
    然后打开客户端请求

    E:\python_project\NetWork\venv\Scripts\python.exe E:/python_project/NetWork/DownloadFileClient.py
    请输入下载服务器的ip192.168.29.2
    请输入下载服务器的port8089
    请输入要下载的文件的名字:file.py
    
    Process finished with exit code 0
    
    E:\python_project\NetWork\venv\Scripts\python.exe E:/python_project/NetWork/DownloadFileServer.py
    客户端要下载的文件是:file.py
    
    客户端修改.png

    相关文章

      网友评论

          本文标题:下载文件

          本文链接:https://www.haomeiwen.com/subject/vsjabqtx.html