• 【python】文件下载---基础版


    基于TCP协议的基础版本,不支持大文件

    Client.py

    import socket
    
    def main():
        # 1. 创建套接字
        tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
        # 2. 获取服务器的ip port
        # dest_ip = input("请输入下载服务器的IP:")
        # dest_port = int(input("请输入下载服务器的Port:"))
    
        # 3. 链接服务器
        # tcp_socket.connect((dest_ip, dest_port))
        tcp_socket.connect(('127.0.0.1', 7890))
    
        # 4. 获取下载的文件名字
        download_file_name = input("请输入要下载的文件名字: ")
    
        # 5. 将文件名字发送到服务器
        tcp_socket.send(download_file_name.encode('utf-8'))
    
        # 6. 接收文件中的数据
        recv_data = tcp_socket.recv(1024)  # 1024--->1k
    
        # 7. 保存接收到的数据到文件中
        if recv_data:
            with open("[新]"+download_file_name,"wb") as f:
                f.write(recv_data)
    
        # 8. 关闭套接字
        tcp_socket.close()
    
    if __name__ == '__main__':
        main()
    

    Server.py

    import socket
    
    def send_file_2_client(new_client_socket, client_addr):
        # 1. 接收客户端发送过来的,要下载的文件名
        file_name = new_client_socket.recv(1024).decode('utf-8')
        print("客户端[%s]需要下载的文件是:%s" % (str(client_addr), file_name))
    
        file_content = None
        # 2. 打开这个文件,读取数据
        try:
            f = open(file_name, "rb")
            file_content = f.read()
            f.close()
        except Exception as ret:
            print("没有要下载的文件[%s]" % file_name)
    
        # 3. 发送文件的数据给客户端
        # new_client_socket.send("hahahah".encode('utf-8'))  # 调试的时候,先给发个假得
        if file_content:
            new_client_socket.send(file_content)
    
    def main():
        # 1. 创建套接字
        tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
        # 2. 创建监听
        tcp_server_socket.bind(("", 7890))
    
        # 3. 套接字被动监听数量
        tcp_server_socket.listen(128)
    
        while True:
            print("wait...")
            # 获取客户端socket,客户端连接信息
            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()
    
  • 相关阅读:
    博客园
    未释放的已删除文件
    ssh连接缓慢
    剑指 Offer 38. 字符串的排列
    剑指 Offer 37. 序列化二叉树
    剑指 Offer 50. 第一个只出现一次的字符
    剑指 Offer 36. 二叉搜索树与双向链表
    剑指 Offer 35. 复杂链表的复制
    剑指 Offer 34. 二叉树中和为某一值的路径
    剑指 Offer 33. 二叉搜索树的后序遍历序列
  • 原文地址:https://www.cnblogs.com/liudianer/p/11764964.html
Copyright © 2020-2023  润新知