yxxs123 发表于 2018-8-3 11:42:39

Python thread 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
  
cmd = self.data
  
if cmd == None or len(cmd) == 0:
  
break;
  
print cmd
  
# business logic here
  
try:
  
if cmd.startswith('echo'):
  
result = cmd
  
elif cmd.startswith('login'):
  
username = cmd
  
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()
页: [1]
查看完整版本: Python thread socket server