千家信息网

python怎么实现TCP文件接收和发送

发表于:2024-11-16 作者:千家信息网编辑
千家信息网最后更新 2024年11月16日,本篇内容主要讲解"python怎么实现TCP文件接收和发送",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python怎么实现TCP文件接收和发送"吧!1、
千家信息网最后更新 2024年11月16日python怎么实现TCP文件接收和发送

本篇内容主要讲解"python怎么实现TCP文件接收和发送",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python怎么实现TCP文件接收和发送"吧!

1、发送

根据自己需求修改,简单局域网下完成文件收发

客户端

# 由客户端向服务器传数据,文件import socketimport tqdmimport osdef send(filename):    # 传输数据间隔符    SEPARATOR = ''    # 服务器信息    host = '127.0.0.1'    port =1234    # 文件缓冲区    Buffersize = 4096*10    # 传输文件名字    filename = filename    # 文件大小    file_size  = os.path.getsize(filename)    # 创建socket链接    s = socket.socket()    print(f'服务器连接中{host}:{port}')    s.connect((host, port))    print('与服务器连接成功')    # 发送文件名字和文件大小,必须进行编码处理    s.send(f'{filename}{SEPARATOR}{file_size}'.encode())    # 文件传输    progress = tqdm.tqdm(range(file_size), f'发送{filename}', unit='B', unit_divisor=1024)    with open(filename,'rb') as f :        # 读取文件        for _ in progress:            bytes_read = f.read(Buffersize)            if not bytes_read:                break            # sendall 确保网络忙碌的时候,数据仍然可以传输            s.sendall(bytes_read)            progress.update(len(bytes_read))    # 关闭资源    s.close()if __name__ == '__main__':    filename = input('请输入文件名:')    send(filename)

2、接收

服务器端

import socketimport tqdmimport osimport threadingdef received():    # 设置服务器的ip和 port    # 服务器信息    sever_host = '127.0.0.1'    sever_port =1234    # 传输数据间隔符    SEPARATOR = ''    # 文件缓冲区    Buffersize = 4096*10    s = socket.socket()    s.bind((sever_host, sever_port))    # 设置监听数    s.listen(128)    print(f'服务器监听{sever_host}:{sever_port}')    # 接收客户端连接    client_socket, address = s.accept()    # 打印客户端ip    print(f'客户端{address}连接')    # 接收客户端信息    received = client_socket.recv(Buffersize).decode()    filename ,file_size = received.split(SEPARATOR)    # 获取文件的名字,大小    filename = os.path.basename(filename)    file_size = int(file_size)    # 文件接收处理    progress = tqdm.tqdm(range(file_size), f'接收{filename}', unit='B', unit_divisor=1024, unit_scale=True)    with open('8_18_'+filename,'wb') as f:        for _ in progress:            # 从客户端读取数据            bytes_read = client_socket.recv(Buffersize)            # 如果没有数据传输内容            if not bytes_read:                break            # 读取写入            f.write(bytes_read)            # 更新进度条            progress.update(len(bytes_read))    # 关闭资源    client_socket.close()    s.close()if __name__ == '__main__':    received()

到此,相信大家对"python怎么实现TCP文件接收和发送"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0