基于进程内通讯的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处理PHP数组文本文件实例
Sep 18 Python
Python使用百度API上传文件到百度网盘代码分享
Nov 08 Python
Python 基础教程之str和repr的详解
Aug 20 Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 Python
Python 查找list中的某个元素的所有的下标方法
Jun 27 Python
pyinstaller参数介绍以及总结详解
Jul 12 Python
tensor和numpy的互相转换的实现示例
Aug 02 Python
Python3进制之间的转换代码实例
Aug 24 Python
Python描述符descriptor使用原理解析
Mar 21 Python
Python 跨.py文件调用自定义函数说明
Jun 01 Python
python基于pexpect库自动获取日志信息
Feb 01 Python
Python plt 利用subplot 实现在一张画布同时画多张图
Feb 26 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/04/25 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
2019/08/09 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
微信小程序动态的加载数据实例代码
2017/04/14 Javascript
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
js实现多个倒计时并行 js拼团倒计时
2019/02/25 Javascript
浅析vue中的MVVM实现原理
2019/03/04 Javascript
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
使用python对多个txt文件中的数据进行筛选的方法
2019/07/10 Python
Django Rest framework权限的详细用法
2019/07/25 Python
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
2019/10/17 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
python中的django是做什么的
2020/07/31 Python
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
海飞丝的广告词
2014/03/20 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
地理科学专业自荐信
2014/09/01 职场文书
检讨书怎么写
2015/01/23 职场文书
六一儿童节致辞
2015/07/31 职场文书
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python
攻略丨滑雪究竟该选哪款对讲机?
2022/02/18 无线电