45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:python基于进程内通讯的聊天室实例分享

python基于进程内通讯的聊天室实例分享

2015-07-21 20:54:01 来源:www.45fan.com 【

python基于进程内通讯的聊天室实例分享

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

#!/usr/bin/env python
# Added by <ctang@redhat.com>
import sys
import os
from multiprocessing import connection
ADDR = ('', 9997)
AUTH_KEY = '12345'
class Server(object):
 def __init__(self, username):
  self.auth_key = AUTH_KEY
  self.addr = ADDR
  self.username = username
  self.listener = connection.Listener(self.addr, authkey=self.auth_key)
 def listen(self):
  while True:
   conn = self.listener.accept()
   while True:
    try:
     request = conn.recv()
     response = self.response(request)
     conn.send(response)
    except EOFError:
     break
   conn.close()
 def reply(self):
  message = raw_input("%s: " % self.username)
  return message
 def output_request(self, request):
  sys.stdout.write('%s says: %s\n' % request)
 def response(self, request):
  self.output_request(request)
  response = (self.username, self.reply())
  return response
class Client(object):
 def __init__(self, username):
  self.auth_key = AUTH_KEY
  self.addr = ADDR
  self.username = username
  self.display_name = self.make_display_name(username)
 def make_display_name(self, username):
  return "%s: " % username
 def connect(self):
  self.conn = connection.Client(self.addr, authkey=self.auth_key)
  while True:
   message = raw_input(self.display_name)
   self.send(message)
   response = self.conn.recv()
   self.output_response(response) 
 def send(self, message):
  self.conn.send((self.username, message))
 def output_response(self, response):
  sys.stdout.write('%s says: %s\n' % response)
def main():
 mode = sys.argv[1]
 if mode == 'server':
  username = raw_input("Your name please: ")
  server = Server(username)
  server.listen()
 elif mode == 'client':
  username = raw_input("Your name please: ")
  client = Client(username)
  client.connect()
if __name__ == '__main__':
 main()

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


本文地址:http://www.45fan.com/a/question/15262.html
Tags: 基于 进程 通讯
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部