基于进程内通讯的python聊天室实现方法

 更新时间:2015年06月28日 15:44:43   作者:不吃皮蛋  
这篇文章主要介绍了基于进程内通讯的python聊天室实现方法,实例分析了Python聊天室的相关实现技巧,需要的朋友可以参考下

本文实例讲述了基于进程内通讯的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 处理不平衡数据集

    这篇文章主要介绍了如何用 Python 处理不平衡数据集,帮助大家更好的利用python进行数据分析,感兴趣的朋友可以了解下
    2021-01-01
  • 利用python判断字母大小写的几种方法小结

    利用python判断字母大小写的几种方法小结

    在开发过程中有时候我们需要判断一个字符串是否是小写形式,下面这篇文章主要给大家介绍了关于利用python判断字母大小写的几种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • python实现用户答题功能

    python实现用户答题功能

    这篇文章主要为大家详细介绍了python实现用户答题功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • python利用有道翻译实现

    python利用有道翻译实现"语言翻译器"的功能实例

    小编就为大家分享一篇python利用有道翻译实现"语言翻译器"的功能实例。具有比较好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • Python中关于列表的常规操作范例以及介绍

    Python中关于列表的常规操作范例以及介绍

    列表是一种有序的集合,可以随时添加和删除其中的元素。在python中使用的频率非常高,本篇文章对大家的学习或工作具有一定的价值,需要的朋友可以参考下
    2021-09-09
  • 对python3 中方法各种参数和返回值详解

    对python3 中方法各种参数和返回值详解

    今天小编就为大家分享一篇对python3 中方法各种参数和返回值详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python使用tarfile模块实现免费压缩解压

    Python使用tarfile模块实现免费压缩解压

    Python自带的tarfile模块可以方便读取tar归档文件,厉害的是可以处理使用gzip和bz2压缩归档文件tar.gz和tar.bz2,这篇文章主要介绍了Python使用tarfile模块实现免费压缩解压,需要的朋友可以参考下
    2024-03-03
  • 使用python接入微信聊天机器人

    使用python接入微信聊天机器人

    这篇文章主要为大家详细介绍了使用python接入微信聊天机器人,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • python将写好的程序打包成exe可执行文件

    python将写好的程序打包成exe可执行文件

    这篇文章主要介绍了python写好的程序打包成exe可执行文件,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • 解决python 读取 log日志的编码问题

    解决python 读取 log日志的编码问题

    今天小编就为大家分享一篇解决python 读取 log日志的编码问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12

最新评论