基于进程内通讯的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+django实现文件下载
Jan 17 Python
python中pandas.DataFrame排除特定行方法示例
Mar 12 Python
Python实现中一次读取多个值的方法
Apr 22 Python
3个用于数据科学的顶级Python库
Sep 29 Python
python3安装speech语音模块的方法
Dec 24 Python
实时获取Python的print输出流方法
Jan 07 Python
Python实现的序列化和反序列化二叉树算法示例
Mar 02 Python
从0开始的Python学习014面向对象编程(推荐)
Apr 02 Python
python操作excel让工作自动化
Aug 09 Python
django-rest-swagger的优化使用方法
Aug 29 Python
python爬虫智能翻页批量下载文件的实例详解
Feb 02 Python
Python3.9.1中使用match方法详解
Feb 08 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执行速度全攻略
2006/10/09 PHP
PHP 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
php 变量未定义等错误的解决方法
2011/01/12 PHP
PHP如何解决网站大流量与高并发的问题
2011/06/25 PHP
php unset全局变量运用问题的深入解析
2013/06/17 PHP
PHP制作万年历
2015/01/07 PHP
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
jquery使用经验小结
2015/05/20 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
从零开始搭建vue移动端项目到上线的步骤
2018/10/15 Javascript
详解puppeteer使用代理
2018/12/27 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
python中文乱码的解决方法
2013/11/04 Python
python提取字典key列表的方法
2015/07/11 Python
Python爬虫DNS解析缓存方法实例分析
2017/06/02 Python
Django数据库迁移常见使用方法
2020/11/12 Python
Python Selenium库的基本使用教程
2021/01/04 Python
HTML5 CSS3新的WEB标准和浏览器支持
2009/07/16 HTML / CSS
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
信息系统专业个人求职信范文
2013/12/07 职场文书
会计学个人自荐信模板
2013/12/13 职场文书
办公室主任先进事迹
2014/01/18 职场文书
优秀教师感人事迹材料
2014/05/04 职场文书
HR必备:超全面的薪酬待遇管理方案!
2019/07/12 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python