您好,欢迎来到汇意旅游网。
搜索
您的当前位置:首页基于进程内通讯的python聊天室实现方法

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

来源:汇意旅游网

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

#!/usr/bin/env python
# Added by 
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
' % 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
' % 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程序设计有所帮助。

Copyright © 2019- hids.cn 版权所有 赣ICP备2024042780号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务