python使用tcp socket 传输文件-服务端,客户端
来源:互联网 发布:查看linux防火墙状态 编辑:程序博客网 时间:2024/05/19 22:57
1.文件接收-服务端
#_*_coding:utf-8_*_# !/etc/bin/env python2.7#coded by wangjd@2017#socket file serverimport socketimport SocketServerimport structimport os#导入外部插件#定义服务器,地址,端口address=("",9999)#(ip,port)class MyRequestHandler(SocketServer.BaseRequestHandler): #继承SocketServer请求处理的类 def handle(self): #重写handle方法 print("connect from :",self.client_address) # 打印客户端连接的IP while True: #没有报错执行 fileinfo_size=struct.calcsize('128sl') #定义文件信息,文件名为128bytes长度 self.buf=self.request.recv(fileinfo_size) #接受的是客户端发送过来的头部信息 if self.buf: self.filename,self.filesize=struct.unpack('128sl',self.buf) #解包得到文件名和文件大小 print("filename and size:",self.filename,self.filesize) self.filename=os.path.join('/home/wangjd/Desktop/','new'+self.filename.strip('\00')) #重新处理文件名,使用trip删除打包时候的多余空字符 recvd_size=0 #初始化接受了的文件大小 file=open(self.filename,'wb') #打开文件 print("start recv data..") while not recvd_size==self.filesize: #当没接收完时候执行 if self.filesize -recvd_size > 1024: rdata=self.request.recv(1024) recvd_size+=len(rdata) #叠加大小 else: rdata=self.request.recv(self.filesize-recvd_size) recvd_size=self.filesize file.write(rdata) #写入 file.close() #关闭文件 SocketServer print('data.....finish')if __name__ == '__main__': tcpSever=SocketServer.ThreadingTCPServer(address,MyRequestHandler) print('waiting...') tcpSever.serve_forever() #保持
2.文件发送-客户端
#_*_coding:utf-8_*_# !/etc/bin/env python2.7#coded by wangjd@2017#file clientsimport socketimport timeimport structimport os#导入外部插件#定义客户端,地址sc=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#实例化socketaddress=('127.0.0.1',9999)#定义addresssc.connect(address)#发起连接while True: file_path="/home/wangjd/Desktop/test.txt" #定义要传输的文件地址 file_info_size=struct.calcsize('128sl') #定义打包规则 fhead=struct.pack('128sl',os.path.basename(file_path),os.stat(file_path).st_size) #定义头信息 sc.send(fhead) #首先发送头部信息 print("send file:",file_path) #打印文件信息 if True: #一切正常,开始处理文件 fo=open(file_path, 'rb') fileData=fo.read(1024) #读取文件数据,1024切分 if not fileData: break #文件为空break else: sc.send(fileData) #发送数据,1024切分的数据 fo.close() #发送结束,关闭文件。 print("finish send..") sc.close() exit()
阅读全文
0 0
- python使用tcp socket 传输文件-服务端,客户端
- TCP 服务端/客户端 传输数据结构
- Python使用socket传输文件
- Tcp从Socket客户端上传文件到ServerSocket服务端
- c语言实现socket服务端/客户端通过tcp传送文件
- 模拟TCP传输的客户端和服务端
- 模拟TCP传输的客户端和服务端
- python TCP客户端服务端通信
- python socket上传文件的服务端和客户端实现
- python socket上传文件的服务端和客户端实现
- Python socket 上传文件的服务端和客户端
- Python socket上传文件的服务端和客户端实现
- python TCP传输文件
- python 使用socket模拟tcp客户端和tcp服务器端
- socket 编程之TCP服务端与客户端
- C# TCP实现多个客户端与服务端 数据 与 文件的传输
- C#中TCP实现多个客户端与服务端数据与文件的传输
- C# TCP实现多个客户端与服务端 数据 与 文件的传输
- 每秒处理10万高并发订单的某集团支付系统架构分享
- hibernate 的缓存机制
- KMP&&trie树&&AC自动机
- URL和URI的区别
- 基于tensorflow的3D CNN代码实现
- python使用tcp socket 传输文件-服务端,客户端
- 再来一次——基于人工智能的应用创新
- Spring @Conditional相关
- 最简单的数据库优化
- 国科大数据挖掘课程总结
- Java基础小知识笔记(自己努力常更新)
- 【图DFS】poj1321
- 利用Django中的url方法实现地址动态拼接自动生成超链接地址
- BZOJ2938[Poi2000]病毒 AC自动机