首页 > 编程 > Python > 正文

基于进程内通讯的python聊天室实现方法

2020-01-04 18:06:23
字体:
来源:转载
供稿:网友

这篇文章主要介绍了基于进程内通讯的python聊天室实现方法,实例分析了Python聊天室的相关实现技巧,需要的朋友可以参考下

本文实例讲述了基于进程内通讯的python聊天室实现方法。分享给大家供大家参考。具体如下:
 

  1. #!/usr/bin/env python 
  2. # Added by <ctang@redhat.com> 
  3. import sys 
  4. import os 
  5. from multiprocessing import connection 
  6. ADDR = ('', 9997) 
  7. AUTH_KEY = '12345' 
  8. class Server(object): 
  9. def __init__(self, username): 
  10. self.auth_key = AUTH_KEY 
  11. self.addr = ADDR 
  12. self.username = username 
  13. self.listener = connection.Listener(self.addr, authkey=self.auth_key) 
  14. def listen(self): 
  15. while True: 
  16. conn = self.listener.accept() 
  17. while True: 
  18. try
  19. request = conn.recv() 
  20. response = self.response(request) 
  21. conn.send(response) 
  22. except EOFError: 
  23. break 
  24. conn.close() 
  25. def reply(self): 
  26. message = raw_input("%s: " % self.username) 
  27. return message 
  28. def output_request(self, request): 
  29. sys.stdout.write('%s says: %s/n' % request) 
  30. def response(self, request): 
  31. self.output_request(request) 
  32. response = (self.username, self.reply()) 
  33. return response 
  34. class Client(object): 
  35. def __init__(self, username): 
  36. self.auth_key = AUTH_KEY 
  37. self.addr = ADDR 
  38. self.username = username 
  39. self.display_name = self.make_display_name(username) 
  40. def make_display_name(self, username): 
  41. return "%s: " % username 
  42. def connect(self): 
  43. self.conn = connection.Client(self.addr, authkey=self.auth_key) 
  44. while True: 
  45. message = raw_input(self.display_name) 
  46. self.send(message) 
  47. response = self.conn.recv() 
  48. self.output_response(response)  
  49. def send(self, message): 
  50. self.conn.send((self.username, message)) 
  51. def output_response(self, response): 
  52. sys.stdout.write('%s says: %s/n' % response) 
  53. def main(): 
  54. mode = sys.argv[1] 
  55. if mode == 'server'
  56. username = raw_input("Your name please: "
  57. server = Server(username) 
  58. server.listen() 
  59. elif mode == 'client'
  60. username = raw_input("Your name please: "
  61. client = Client(username) 
  62. client.connect() 
  63. if __name__ == '__main__'
  64. main() 

希望本文所述对大家的Python程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表