就业DAY2_网络编程_文件下载客户端及服务器

时间:2019-08-31
本文章向大家介绍就业DAY2_网络编程_文件下载客户端及服务器,主要包括就业DAY2_网络编程_文件下载客户端及服务器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
import socketdef main():
    # 创建套接字
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 获取服务器的ip port
    dest_addr = input("请输入服务器的ip:")
    dest_port = int(input("请输入服务器的port:"))

    # 链接服务器
    tcp_socket.connect((dest_addr, dest_port))

    # 获取下载的文件名字
    file = input("请输入需要下载的文件名:")

    # 将文件名字发送到服务器
    tcp_socket.send(file.encode("gbk"))

    # 接收文件中的数据
    recv_data = tcp_socket.recv(1024)

    # 保存接收到的数据到一个文件中
    if recv_data:
        with open("复件" + file, "wb") as f:
            f.write(recv_data)
    # 关闭套接字
    tcp_socket.close()


if __name__ == "__main__":
    main()
import socket

def send_file_2_client(client_socket, client_addr):
    # 1 接收需要下载的文件名
    # 接收客户端发送来的请求,接收客户端发过来的文件名
    file_name = client_socket.recv(1024)
    print("客户端%s发过来的文件名:%s" % (str(client_addr), file_name.decode("gbk")))

    file_content = None
    # 2 打开文件,读取数据
    try:
        f = open(file_name.decode("gbk"), "rb")
        file_content = f.read()
        f.close()
    except Exception as ret:
        print("没有要下载的文件%s" % ret)

    # 3 发送文件的数据给客户端
    if  file_content:
    # 回送一部分数据给客户端
        client_socket.send(file_content)


def main():
    # 买个手机-创建tcp套接字
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 插入手机卡-绑定
    tcp_socket.bind(("", 7890))

    # 将手机设置为正常的响铃模式(让默认的套接字由主动变为被动listen)
    tcp_socket.listen(128)

    while True:
        # 等待别人的电话到来(等待客户端的链接 accept)
        client_socket, client_addr = tcp_socket.accept()

        # print(client_socket)
        print(client_addr)

        send_file_2_client(client_socket, client_addr)

        # 关闭套接字

        client_socket.close()
    tcp_socket.close()

if __name__ == "__main__":
    main()

原文地址:https://www.cnblogs.com/joycezhou/p/11440429.html