基于进程内通讯的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 相关文章推荐
Python3实现连接SQLite数据库的方法
Aug 23 Python
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
python的dataframe和matrix的互换方法
Apr 11 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
cProfile Python性能分析工具使用详解
Jul 22 Python
Python3 字典dictionary入门基础附实例
Feb 10 Python
浅析python表达式4+0.5值的数据类型
Feb 26 Python
一文了解python 3 字符串格式化 F-string 用法
Mar 04 Python
Selenium常见异常解析及解决方案示范
Apr 10 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
利用python实现平稳时间序列的建模方式
Jun 03 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
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
PHP 得到根目录的 __FILE__ 常量
2008/07/23 PHP
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
基于php在各种web服务器的运行模式详解
2013/06/03 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
2012/02/23 Javascript
jquery 层次选择器siblings与nextAll的区别介绍
2013/08/02 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
Python字符串替换实例分析
2015/05/11 Python
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
Python unittest模块用法实例分析
2018/05/25 Python
python如何爬取个性签名
2018/06/19 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
python多线程并发及测试框架案例
2019/10/15 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
2021/03/03 Python
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
25道Java面试题集合
2013/05/21 面试题
外贸采购员求职的自我评价
2013/11/26 职场文书
高一数学教学反思
2014/02/07 职场文书
单位工作证明
2014/10/07 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
上级领导检查欢迎词
2015/09/30 职场文书