__author__ = 'zhaobin022'
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import SocketServer
import subprocess
class MyServer(SocketServer.BaseRequestHandler):
def handle(self):
# print self.request,self.client_address,self.server
conn = self.request
conn.sendall('from %s%s ' % self.client_address )
Flag = True
while Flag:
data = conn.recv(1024)
if data == 'sendcommand':
conn.sendall('ready')
command = conn.recv(1024)
p=subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(stdoutput,erroutput) = p.communicate()
print (stdoutput,erroutput)
if len(erroutput) == 0:
total = len(stdoutput)
conn.sendall('total')
data = conn.recv(1024)
if data == 'ready':
conn.sendall(str(total))
data = conn.recv(1024)
if data == 'begin':
conn.sendall(stdoutput)
else:
conn.sendall('error')
print 'send error'
data = conn.recv(1024)
if data == 'senderror':
print 'in senderror errouput'
conn.sendall(erroutput)
elif data == 'exit':
break
if __name__ == '__main__':
server = SocketServer.ThreadingTCPServer(('127.0.0.1',8009),MyServer)
server.serve_forever()
__author__ = 'zhaobin022'
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import socket
ip_port = ('127.0.0.1',8009)
sk = socket.socket()
sk.connect(ip_port)
sk.settimeout(5)
data = sk.recv(1024)
print 'receive:',data
while True:
inp = raw_input('please input:')
sk.sendall('sendcommand')
data = sk.recv(1024)
if data == 'ready':
sk.sendall(inp)
data = sk.recv(1024)
if data == 'total':
sk.sendall('ready')
data = sk.recv(1024)
print data
total = int(data)
receive = 0
sk.sendall('begin')
while True:
data = sk.recv(1024)
receive += len(data)
if total == receive:
print data
sk.sendall('finish')
break
elif data == 'error':
print 'in error'
sk.sendall('senderror')
data = sk.recv(8192)
print data
sk.close()