Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7404073
  • 博文数量: 1756
  • 博客积分: 18684
  • 博客等级: 上将
  • 技术积分: 16232
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-02 10:28
个人简介

啥也没写

文章分类

全部博文(1756)

文章存档

2024年(2)

2023年(44)

2022年(39)

2021年(46)

2020年(43)

2019年(27)

2018年(44)

2017年(50)

2016年(47)

2015年(15)

2014年(21)

2013年(43)

2012年(143)

2011年(228)

2010年(263)

2009年(384)

2008年(246)

2007年(30)

2006年(38)

2005年(2)

2004年(1)

分类: LINUX

2011-08-25 17:25:19

  1. #!/usr/bin/env python
  2. import threading
  3. import SocketServer

  4. users = []

  5. class MyTCPHandler(SocketServer.StreamRequestHandler):
  6.     def handle(self):
  7.         username = None
  8.         while True:
  9.             self.data = self.rfile.readline().strip()
  10.             cur_thread = threading.currentThread()
  11.             print "RECV from ", self.client_address[0]
  12.             cmd = self.data
  13.             if cmd == None or len(cmd) == 0:
  14.                 break;
  15.             print cmd
  16.             # business logic here
  17.             try:
  18.                 if cmd.startswith('echo'):
  19.                     result = cmd[5:]
  20.                 elif cmd.startswith('login'):
  21.                     username = cmd[6:]
  22.                     users.append({username:self.wfile})
  23.                     result = username + ' logined.'
  24.                 elif cmd == 'quit':
  25.                     break
  26.                 else:
  27.                     result = 'error cmd'
  28.                 self.wfile.write(result)
  29.                 self.wfile.write('\n')
  30.             except:
  31.                 print 'error'
  32.                 break
  33.         try:
  34.             if username != None:
  35.                 users.remove(username)
  36.         except:
  37.             pass
  38.         print username, ' closed.'

  39. class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
  40.     pass

  41. if __name__ == "__main__":
  42.     HOST, PORT = "localhost", 9999

  43.     server = ThreadedTCPServer((HOST, PORT), MyTCPHandler)
  44.     server_thread = threading.Thread(target=server.serve_forever)
  45.     server_thread.setDaemon(True)
  46.     server_thread.start()
  47.     server.serve_forever()
阅读(836) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~