python实现TCP文件接收发送
本文实例为大家分享了python实现TCP文件接收发送的具体代码,供大家参考,具体内容如下
下一篇分享:udp收发的实现
先运行服务器端打开接收,在运行客服端发送文件
还有记得改一下ip哟
1、发送根据自己需求修改,简单局域网下完成文件收发
客户端
# 由客户端向服务器传数据,文件import socketimport tqdmimport osdef send(filename): # 传输数据间隔符 SEPARATOR = ’<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 = ’<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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。
相关文章:
1. IDEA 使用mybatis插件Free Mybatis plugin的步骤(推荐)2. 解决idea使用maven编译正常但是运行项目时却提示很多jar包找不到的问题3. Hadoop 使用IntelliJ IDEA 进行远程调试代码的配置方法4. idea的easyCode的 MybatisPlus模板的配置详解5. 关于IDEA git 只有Commit没有Push的问题6. 一文读懂IDEA里面的Artifact到底是什么7. Intellij IDEA 2019 最新乱码问题及解决必杀技(必看篇)8. 一篇文章带你解决 IDEA 每次新建项目 maven home directory 总是改变的问题9. IDEA 使用 SpotBugs 找出你代码中的bug问题10. Java FileInputStream与FileOutputStream使用详解

网公网安备