python实现TCP文件接收发送

本文实例为大家分享了python实现TCP文件接收发送的具体代码,供大家参考,具体内容如下
下一篇分享:udp收发的实现
先运行服务器端打开接收,在运行客服端发送文件
还有记得改一下ip哟
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*10s = socket.socket()s.bind((sever_host, sever_port))# 设置监听数s.listen(128)print(f'服务器监听{sever_host}:{sever_port}')# 接收客户端连接client_socket, address = s.accept()# 打印客户端ipprint(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文件接收发送】以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    推荐阅读