【python】文件下载—基础版

阿里云双11来了!从本博客参与阿里云,服务器最低只要86元/年!

基于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()

https://www.cnblogs.com/liudianer/p/11764964.html

Python量化投资网携手4326手游为资深游戏玩家推荐:《《光芒》:【蝗家鉴赏团】《妖恋奇谭》试玩体验

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
Python
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论