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


Posted in Python onJune 28, 2015

本文实例讲述了基于进程内通讯的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程序设计有所帮助。

Python 相关文章推荐
Python编程语言的35个与众不同之处(语言特征和使用技巧)
Jul 07 Python
Python下线程之间的共享和释放示例
May 04 Python
python生成器generator用法实例分析
Jun 04 Python
100行python代码实现跳一跳辅助程序
Jan 15 Python
python与sqlite3实现解密chrome cookie实例代码
Jan 20 Python
python中pylint使用方法(pylint代码检查)
Apr 06 Python
Python多进程原理与用法分析
Aug 21 Python
Opencv+Python 色彩通道拆分及合并的示例
Dec 08 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
Python socket 套接字实现通信详解
Aug 27 Python
在python下实现word2vec词向量训练与加载实例
Jun 09 Python
教你如何用python操作摄像头以及对视频流的处理
Oct 12 Python
python实现的简单RPG游戏流程实例
Jun 28 #Python
python实现自动登录人人网并采集信息的方法
Jun 28 #Python
Python实现将绝对URL替换成相对URL的方法
Jun 28 #Python
python实现将html表格转换成CSV文件的方法
Jun 28 #Python
python实现根据主机名字获得所有ip地址的方法
Jun 28 #Python
python自动zip压缩目录的方法
Jun 28 #Python
python查找指定具有相同内容文件的方法
Jun 28 #Python
You might like
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
动态添加option及createElement使用示例
2014/01/26 Javascript
jQuery中live()方法用法实例
2015/01/19 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
Vue-Cli项目优化操作的实现
2019/10/27 Javascript
JavaScript创建表格的方法
2020/04/13 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
2020/04/28 Javascript
浅谈python内置变量-reversed(seq)
2017/06/21 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
Flask实现跨域请求的处理方法
2018/09/27 Python
Python笔试面试题小结
2019/09/07 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
python matlab库简单用法讲解
2020/12/31 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
福克斯租车:Fox Rent A Car
2017/04/13 全球购物
教师开学感言
2014/02/14 职场文书
土木工程专业推荐信
2014/02/19 职场文书
保险专业自荐信范文
2014/02/20 职场文书
高中军训感想300字
2014/03/04 职场文书
公司门卫岗位职责
2014/03/15 职场文书
优秀语文教师事迹
2014/05/18 职场文书
死亡证明书样本说明
2014/10/18 职场文书
领导干部“四风”查摆问题个人整改措施
2014/10/28 职场文书
答谢词范文
2015/01/05 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL