基于进程内通讯的python聊天室实现方法
作者:不吃皮蛋 发布时间:2021-01-24 03:50:53
标签: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程序设计有所帮助。


猜你喜欢
- 析构函数__del__定义:在类里定义,如果不定义,Python 会在后台提供默认析构函数。析构函数__del__调用:A、使用del 显式
- 不难,代码总共也就25行,大致逻辑如下。总共分为是下面两步在云服务器上部署自定义消息处理服务这里需要我们自定义来处理用户发送过来的消息首先导
- 本文实例为大家分享了js实现QQ邮箱邮件拖拽删除的具体代码,供大家参考,具体内容如下步骤分析:根据数据结构生成HTML结构全选和单选功能的实
- requests 是一个非常小巧全面的库,应用它可以很容易写出与服务器进行交互的程序,今天遇到了一个问题,与服务器交互时,url都是http
- mysql drop database命令用于删除一个数据库,如果试图使用drop database命令删除一个不存在的数据库,那么那么你会
- 本文实例讲述了微信小程序开发之animation循环动画实现的让云朵飘效果。分享给大家供大家参考,具体如下:微信小程序提供了实现动画的api
- 注:使用的是Python2.7。一、实例方法实例方法就是类的实例能够使用的方法。如下:class Foo:  
- 事件背景过年在家正好闲得没有太多事情,想起年前一个研发项目负责人反馈的问题:“老李啊,我们组一直在使用你这边的 gin
- 单位内部网站第三次修改,即将进入尾声,遇到一个怪现象,就是在自定义标签中,加入链接会被替换掉成这样的格式{$GetInstallDir}ad
- 数据是企业核心资产,数据对企业而言是最重要的工作之一。稍有不慎,极有可能发生数据无意泄露,甚至被黑客恶意窃取的风险。每年业界都会传出几起大事
- 代码如下:<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"
- 目录程序的组织结构顺序结构对象的布尔值选择结构单分支结构小实验双分支结构小实验多分支结构小实验python代码的独特写法分支结构_嵌套if的
- 1. 查询 除了单条记录的查询,这里我们来尝试查询一组记录。IUserMapper接口添加下面方法:List<User> get
- $也能匹配\n见Perl语言入门,page 132, 注释61 /^.*$/能匹配"\n"么?能!因为$不仅能匹配行尾,
- 简介Github:https://github.com/spf13/cobraStar:26.5KCobra是一个用Go语言实现的命令行工具
- 一、远程过程调用RPC XML-RPC is a Remote Procedure Call method that uses XML pa
- 根据google最新的算法规则:用户行为模式的重视程度越来越高,这也就要求网页设计的时候应注意“合理的网页结构”,SEO业界也有个共识“网页
- 5月3日晚,央视在《新闻联播》前播放了B站青年宣言片《后浪》,这是B站首次登陆央视黄金时段,今天在朋友圈陆续看到相关的视频。最早用B站的同学
- 如下所示:#先下载psutil库:pip install psutilimport psutilimport os,datetimedef
- 本文实例为大家分享了python实现图片转字符画的具体代码,供大家参考,具体内容如下源码(注释很详细):# -*- coding=utf-8