基于进程内通讯的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命令行交互提示符的方法
Jan 14 Python
Python守护进程(daemon)代码实例
Mar 06 Python
python 编程之twisted详解及简单实例
Jan 28 Python
关于python的list相关知识(推荐)
Aug 30 Python
python中实现字符串翻转的方法
Jul 11 Python
django 连接数据库 sqlite的例子
Aug 14 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
python topk()函数求最大和最小值实例
Apr 02 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
Jun 22 Python
如何解决cmd运行python提示不是内部命令
Jul 01 Python
python如何写try语句
Jul 14 Python
Python机器学习之逻辑回归
May 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 ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
PHP生成条形图的方法
2014/12/10 PHP
详解php用static方法的原因
2018/09/12 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
学习ExtJS form布局
2009/10/08 Javascript
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
详解组件库的webpack构建速度优化
2018/06/18 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
深入讲解Python中面向对象编程的相关知识
2015/05/25 Python
Java中重定向输出流实现用文件记录程序日志
2015/06/12 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
智能电子应届生求职信
2013/11/10 职场文书
初中生期末考试的自我评价
2013/12/17 职场文书
市场营销毕业生自荐信范文
2014/04/01 职场文书
委托书范本
2014/04/02 职场文书
政府绩效管理实施方案
2014/05/04 职场文书
2014财务年度工作总结
2014/11/11 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
Vue图片裁剪组件实例代码
2021/07/02 Vue.js