python_example_07(文件下载器(服务端))

import socket

# 服务端:
def get_file_2_content(new_client_socket,client_addr):
    """获取文件的内容"""
    # 1.接收客户端 需要下载的文件名
    # 接收客户端发送过来的请求
    print("等待下载服务中...:")
    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.发送文件的数据给客户端
    if file_content:
        # new_client_socket.send("hahah".encode("utf-8"))
        new_client_socket.send(file_content)


def main():
    # 1.创建套接字 socket
    tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    # 2.绑定本地信息  bind
    tcp_server_socket.bind(("",8899))
    # 3.让默认的套接字由主动变为被动 listen (监听套接字,等待有新的客户端进行连接)
    tcp_server_socket.listen(128)
    while True:
        # 4.等待客户端的链接 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()

猜你喜欢

转载自blog.csdn.net/weixin_44786482/article/details/89508212