• 客户端下载


    服务端:

    import socket
    
    def read_file_data(file_name):
        """获取指定文件的数据"""
        try:
            file = open(file_name, "rb")
        except Exception as e:
            print("文件不存在")
        else:
            # 如果文件太大 会有隐患
            file_data=file.read()
            file.close()
    
            return file_data
    
    # 创建一个服务端套接字
    server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    
    # 绑定端口
    server_socket.bind(('',9999))
    
    # 将套接字设置成监听模式(被动)
    server_socket.listen(128)
    
    while True:
        client_socket,client_address=server_socket.accept()
        print("接收到来自%s的文件下载请求" %str(client_address))
    
        # 接收文件名 读取本地文件地址
        file_name=client_socket.recv(4096)
        file_data=read_file_data(file_name)
    
        # 将读取到的文件发送给客户端
        if file_data:
            client_socket.send(file_data)
    
        # 关闭客户端关联的套接字
        client_socket.close()

    客户端:

    import os
    import socket
    
    # 1.创建一个本地套接字
    tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    
    # 2.链接服务器
    IP=input("服务端IP地址:")
    port=int(input("服务端口号:"))
    
    tcp_socket.connect((IP,port))
    
    # 3.发送文件下载请求的文件名
    
    file_name=input("请选择一个下载的文件名:")
    tcp_socket.send(file_name.encode())
    
    file=open("new_"+file_name,"wb")
    
    # 记录已经写入文件的数据大小
    had_write_len=0
    
    while True:
        # 4.通过该链接 接收文件数据-->写入本地
        data=tcp_socket.recv(4096)
        if data:
            file.write(data)
            had_write_len+=len(data)
        else:
            # 5.文件传输完成
            # 对方关掉链接
            file.close()
            if had_write_len>0:
                print("文件传输完成")
            else:
                # 移除掉空文件
                print("服务器没有这个文件")
                os.remove("new_"+file_name)
            tcp_socket.close()
    import os
    import socket

    # 1.创建一个本地套接字
    tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

    # 2.链接服务器
    IP=input("服务端IP地址:")
    port=int(input("服务端口号:"))

    tcp_socket.connect((IP,port))

    # 3.发送文件下载请求的文件名

    file_name=input("请选择一个下载的文件名:")
    tcp_socket.send(file_name.encode())

    file=open("new_"+file_name,"wb")

    # 记录已经写入文件的数据大小
    had_write_len=0

    while True:
    # 4.通过该链接 接收文件数据-->写入本地
    data=tcp_socket.recv(4096)
    if data:
    file.write(data)
    had_write_len+=len(data)
    else:
    # 5.文件传输完成
    # 对方关掉链接
    file.close()
    if had_write_len>0:
    print("文件传输完成")
    else:
    # 移除掉空文件
    print("服务器没有这个文件")
    os.remove("new_"+file_name)
    tcp_socket.close()
  • 相关阅读:
    telnet退出
    Eclipse srever起来时,时间超过45s。
    maven报错 Failure to transfer org.apache.maven.plugins:maven-compiler-plugin:pom:3.5.0 from
    需求讨论
    PyTorch学习笔记之计算图
    PyTorch学习笔记之CBOW模型实践
    PyTorch学习笔记之n-gram模型实现
    PyTorch学习笔记之初识word_embedding
    7月3日-9日_周报
    python学习笔记之heapq内置模块
  • 原文地址:https://www.cnblogs.com/fjiqiang/p/10553985.html
Copyright © 2020-2023  润新知