您的位置:首页 > 编程语言 > Python开发

Python thread socket server

2009-03-08 17:30 453 查看
从网上参考了一些代码,实现了一个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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息