发布时间:2019-09-22 07:47:28编辑:auto阅读(1779)
从网上参考了一些代码,实现了一个Python实现的基于线程的socket server, 用来实现各种服务系统的原型。放在这里供以后参考。
#!/usr/bin/env python
import threading
import SocketServer
users = []
class MyTCPHandler(SocketServer.StreamRequestHandler):
def handle(self):
username = None
while True:
self.data = self.rfile.readline().strip()
cur_thread = threading.currentThread()
print "RECV from ", self.client_address[0]
cmd = self.data
if cmd == None or len(cmd) == 0:
break;
print cmd
# business logic here
try:
if cmd.startswith('echo'):
result = cmd[5:]
elif cmd.startswith('login'):
username = cmd[6:]
users.append({username:self.wfile})
result = username + ' logined.'
elif cmd == 'quit':
break
else:
result = 'error cmd'
self.wfile.write(result)
self.wfile.write('\n')
except:
print 'error'
break
try:
if username != None:
users.remove(username)
except:
pass
print username, ' closed.'
class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
pass
if __name__ == "__main__":
HOST, PORT = "localhost", 9999
server = ThreadedTCPServer((HOST, PORT), MyTCPHandler)
server_thread = threading.Thread(target=server.serve_forever)
server_thread.setDaemon(True)
server_thread.start()
server.serve_forever()
上一篇: python调用tcl
下一篇: 利用Python Paramiko开发l
51279
50728
41328
38140
32604
29508
28361
23227
23195
21521
1593°
2316°
1924°
1865°
2192°
1906°
2596°
4356°
4208°
2988°