基于进程内通讯的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字符串中查找子串小技巧
Apr 10 Python
python中执行shell的两种方法总结
Jan 10 Python
Python爬取网易云音乐热门评论
Mar 31 Python
python中利用xml.dom模块解析xml的方法教程
May 24 Python
Python MySQL数据库连接池组件pymysqlpool详解
Jul 07 Python
Django 根据数据模型models创建数据表的实例
May 27 Python
flask框架中勾子函数的使用详解
Aug 01 Python
利用python开发app实战的方法
Jul 09 Python
Python range与enumerate函数区别解析
Feb 28 Python
Python3.9又更新了:dict内置新功能
Feb 28 Python
keras 指定程序在某块卡上训练实例
Jun 22 Python
Python编写车票订购系统 Python实现快递收费系统
Aug 14 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/11/16 PHP
php中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
PHP使用自定义方法实现数组合并示例
2016/07/07 PHP
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
2017/02/09 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
vue引入静态js文件的方法
2020/06/20 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
浅谈Python中重载isinstance继承关系的问题
2018/05/04 Python
python标准库os库的函数介绍
2020/02/12 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
学院书画协会部门职责
2013/11/28 职场文书
高二生物教学反思
2014/01/27 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
少先队活动总结
2014/08/29 职场文书
会计师事务所实习证明
2014/11/16 职场文书
优秀教研组申报材料
2014/12/26 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
2015年乡镇党务公开工作总结
2015/05/19 职场文书
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript
MYSQL 表的全面总结
2021/11/11 MySQL
Python各协议下socket黏包问题原理
2022/04/12 Python