基于进程内通讯的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 time模块详解(常用函数实例讲解,非常好)
Apr 24 Python
python实现的udp协议Server和Client代码实例
Jun 04 Python
实用自动化运维Python脚本分享
Jun 04 Python
python3.x 将byte转成字符串的方法
Jul 17 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
Dec 20 Python
python opencv判断图像是否为空的实例
Jan 26 Python
python中的print()输出
Apr 12 Python
基于python实现雪花算法过程详解
Nov 16 Python
python+OpenCV实现图像拼接
Mar 05 Python
python小程序基于Jupyter实现天气查询的方法
Mar 27 Python
深入了解NumPy 高级索引
Jul 24 Python
python实现图像高斯金字塔的示例代码
Dec 11 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留言本模块主要功能的函数说明(代码可实现)
2013/06/25 PHP
使用PHP实现Mysql读写分离
2013/06/28 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
JavaScript 学习笔记(十五)
2010/01/28 Javascript
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
vue 设置路由的登录权限的方法
2018/07/03 Javascript
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
详解 微信小程序开发框架(MINA)
2019/05/17 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
饲料采购员岗位职责
2013/12/19 职场文书
宿舍违规检讨书
2014/01/12 职场文书
商场中秋节活动方案
2014/02/07 职场文书
软环境建设心得体会
2014/09/09 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
经营场所证明范本
2015/06/19 职场文书
django 认证类配置实现
2021/11/11 Python
使用Apache Camel表达REST服务的方法
2022/06/10 Servers