实现一个简单的多线程数据传输和文件传输
2014-09-29 21:24
513 查看
服务器端:
客户端:
#!/usr/bin/env python #conding=utf-8 import SocketServer import commands import time class MyTCPHandler(SocketServer.BaseRequestHandler): def handle(self): while True: self.data = self.request.recv(1024).strip() if not self.data: break print self.data user_input = self.data.split() if user_input[0] == 'get': with open(user_input[1],'rb') as f: self.request.sendall(f.read()) time.sleep(0.5) self.request.send('FileTransferDone') continue cmd_status,result = commands.getstatusoutput(self.data) if len(result.strip()) != 0: self.request.sendall(result) else: self.request.sendall("Done") if __name__ == "__main__": host,port = "localhost",9991 server = SocketServer.ThreadingTCPServer((host,port), MyTCPHandler) server.serve_forever()
客户端:
#!/usr/bin/env python #coding=utf-8 import socket import time import os c = socket.socket(socket.AF_INET, socket.SOCK_STREAM) c.connect(('127.0.0.1', 9991)) while True: cmd = raw_input() if len(cmd) == 0: continue c.send(cmd) if cmd.split()[0] == 'get': pathstr = cmd.split()[1] (dirstr,filestr) = os.path.split(pathstr) s = os.getcwd() newstr = os.path.join(s , filestr) with open(newstr, 'wb') as f: while 1: data = c.recv(1024) if data == "FileTransferDone": break f.write(data) else: print c.recv(1024) # time.sleep(2)
相关文章推荐
- 实现一个简单的摄像功能(不带传输数据)代码片段
- Java多线程-一个简单的线程,实现挂起和恢复的功能
- C#实现Socket传输简单数据
- 用Python实现一个简单的文件传输协议
- MFC:一个简单的多线程传送文件的实现 client端(2)
- C#实现一个简单的多线程IP或端口扫描器
- 一个简单的php实现的MySQL数据浏览器
- 实现一个压缩Remoting传输数据的Sink:CompressionSink
- Java多线程-一个简单的线程,实现挂起和恢复的功能
- 使用python多线程实现一个简单spider
- 使用python多线程实现一个简单spider
- JAVA SOCKET 实现多线程文件传输(Server端的多线程,Client一次只有一个)
- C#实现Socket传输简单数据
- 一个简单的php实现的MySQL数据浏览器
- C#实现Socket传输简单数据
- 实现一个压缩Remoting传输数据的Sink:CompressionSink (转载)
- WEB Service 下实现大数据量的传输WEB Service,大数据量(简单方法)
- C++实现的一个简单的多线程程序
- 使用EF6和MVC5实现一个简单的选课系统--使用EF6读取相关数据(7/12)
- Java多线程-一个简单的线程,实现挂起和恢复的功能