#!/usr/bin/env python
#-*- coding: utf-8 -*-
import sys
sys.dont_write_bytecode = True
import shlex
import subprocess
import SocketServer
sess = []
class TCPHandler(SocketServer.BaseRequestHandler):
def handle(self):
global sess
sess.append(self.request)
ip,port = self.client_address
print "#%d: client %s:%d"%(len(sess),ip,port)
while True:
cmd = self.request.recv(8192)
out = subprocess.check_output(shlex.split(cmd),stderr=subprocess.STDOUT,shell=True)
self.request.send(out)
self.request.close()
class ThreadedTCPServer(SocketServer.ThreadingMixIn,SocketServer.TCPServer): pass
if __name__ == "__main__":
port = 4242
svr = ThreadedTCPServer(("",port),TCPHandler)
print ":%d"%port
svr.serve_forever()
Tags:
你不应该循环
只是一个猜测。。
这比你想象的要简单得多:
而不是使用新的
ThreadedTCPServer
而不是TCPServer
。有关详细信息,请阅读some doc。
但是在代码中您犯了一些错误:
target
必须是callable
对象,而不是“已调用”对象。相关问题 更多 >
编程相关推荐