*******************************************server.py*******************************************
#!/usr/bin/env python
#coding:utf-8import SocketServer
import subprocess
import os,time
class HandlerTCP(SocketServer.StreamRequestHandler):
def handle(self):
try:
while True:
data = self.rfile.readline().strip()
if data == '' or data == 'exit':
self.request.sendall('CTRL+C 退出')
self.finish()
else:
A = subprocess.Popen("%s" % data,bufsize=0,stdout=subprocess.PIPE,shell=True)
Line = 1
while Line:
Line = A.stdout.readline()
if Line == "\r\n":
pass
else:
self.wfile.write('%s \n' % Line.strip())
Line = Line.strip()
if Line:
pass
else:
self.wfile.write("<<EOF")
except Exception,e:
A.kill()
self.finish()
try:
con = SocketServer.ThreadingTCPServer(('127.0.0.1',34),HandlerTCP)
con.serve_forever()
except KeyboardInterrupt,e:
con.server_close()
except Exception,e:
if e[0] == 10048:
print '端口已被占用,请重新启动程序'
else:
print 'Good Bye',e[0]
*******************************************client.py*******************************************
#!/usr/bin/env python
#coding:utf-8
import socket
import os,sys
con = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
con.connect(('127.0.0.1',34))
#con.settimeout(2)
try:
while True:
try:
Input = raw_input('Please Enter: ')
except KeyboardInterrupt,e:
con.close()
if Input:
con.send(Input+'\n')
try:
while True:
data = con.recv(2048)
if data:
if "<<EOF" not in data:
print data
else:
print data.split("<<")[0]
break
else:
break
except KeyboardInterrupt,e:
pass
else:
print '输入不能为空'
except Exception,e:
print 'Good Bye'
con.close()