python基于twisted框架编写简单聊天室
作者:PythonTZ 发布时间:2021-12-12 17:56:51
标签:python,twisted,聊天室
本文实例为大家分享了使用python的twisted框架编写一个简单的聊天室具体代码,供大家参考,具体内容如下
下面是基本架构
代码:
# -*- coding:utf-8 -*-
from twisted.internet.protocol import Factory
from twisted.protocols.basic import LineReceiver
from twisted.internet import reactor
user = {}
class ChatReci(LineReceiver): #定义一个类,这里继承的是LineReceiver
def __init__(self): #初始化2个变量
self.name = ''
self.state = "game"
def connectionMade(self): #连接协议,当客户端连接即发出消息
self.sendLine("input you name?")
def lineReceived(self, data): #这个函数定义了取名 打印欢迎界面,以及发送信息给连上来的用户
if self.name == '': #判断名字是否为空 如果为空就进行下面的操作
self.name = data #给self.name赋值
self.sendLine("you welcome, %s!" % (self.name)) #打印欢迎信息
user[self.name] = self #赋值给user
print '%s loging' %data #打印登录信息
else: #不为空就打印信息
message = "<%s> %s" % (self.name, data) #定义聊天信息
for ur,protocol in user.items(): #取他的用户名
if protocol != user: #判断他是不是一个用户 如果不是就传送消息
protocol.sendLine(message) #传送消息
factory = Factory() #定义工厂
factory.protocol = ChatReci #绑定我的类
reactor.listenTCP(22222, factory) #绑定端口和工厂
reactor.run() #启动
效果图:
来源:http://blog.csdn.net/PythonTZ/article/details/53956256
0
投稿
猜你喜欢
- Dreamweaver MX 2004新增加了表格宽度辅助线功能,让我们在编辑网页表格的时候能清楚地看到表格中各单元的宽度以及变化,很直观。
- 常用配置以下配置能使用File -> New Projects Settings -> Settings for New Pro
- 单位的小王学习SQL Server已有一段时间了,已经做了个不错的管理系统,有次小王让我帮着看看库的设计有没有问题,其间我发现他的安全意识非
- 一个网站信息结构需要表现给用户看,这样用户才能知道当前是在哪儿,才有可能去猜测某个内容可能会在哪儿。如何表现网站的信息结构给用户呢?用导航。
- 操作系统会为每一个创建的进程分配一个独立的地址空间,不同进程的地址空间是完全隔离的,因此如果不加其他的措施,他们完全感觉不到彼此的存在。那么
- 如何让我的网页自动适应客户端的屏幕分辨率?然后用下列办法进行自动推送:<% @language="vbscript
- 题目:轮盘分为三部分: 一等奖, 二等奖和三等奖;轮盘转的时候是随机的,如果范围在[0,0.08)之间,代表一等奖,如果范围在[0.08,0
- 看看怎样抓到你:<%Dim objCMFUDim strModifiedSet objCMFU 
- 摘要:本文介绍了字符与编码的发展过程,相关概念的正确理解。举例说明了一些实际应用中,编码的实现方法。然后,本文讲述了通常对字符与编码的几种误
- 问题说明最近在写爬虫,由于单个账号访问频率太高会被封,所以需要在爬虫执行一段时间间隔后自己循环切换账号所以就在想,有没有像单片机那样子设置一
- 本教程旨在介绍如何使用七牛的Python SDK来快速地进行文件上传,下载,处理,管理等工作。安装首先,要使用Python的SDK必须要先安
- 密码强度是一个很普遍的功能,比较简单,主要是怎么制定这个强度规则。现在需要升级密码强度的验证,以前的验证比较简单,现在已经不能满足需求了,现
- 写在前面这次的爬虫是关于房价信息的抓取,目的在于练习10万以上的数据处理及整站式抓取。数据量的提升最直观的感觉便是对函数逻辑要求的提高,针对
- Oracle的Nvl函数nvl( ) 函数从两个表达式返回一个非null 值。语法NVL(eExpression1, eExpression
- 原来工作中曾经碰到过UL列表里一些异常的表现,加上昨天看到了http://bbs.blueidea.com/thread-2984871-1
- 时间处理是我们日常开发中最最常见的需求,例如:获取当前datetime、获取当天date、获取明天/前N天、获取当天开始和结束时
- Python 语言的优势在于其功能强大,可以用于网络数据采集、数据分析等各种应用场景。本篇文章将介绍如何使用 Python 获取网络数据、使
- 动态变量名赋值在使用 tkinter 时需要动态生成变量,如动态生成 var1...var10 变量。使用 exec 动态赋值exec 在
- 通过一条命令用Npm安装gulp-htmlmin:npm install gulp-htmlmin --save-dev安装完毕后,打开gu
- ASP.net处理文件上传就简单的多了,我呢也是在学习中,顺便写写学习笔记。 先在表单中添加enctype="multipart/