python基于twisted框架编写简单聊天室


Posted in Python onJanuary 02, 2018

本文实例为大家分享了使用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()       #启动

效果图:

python基于twisted框架编写简单聊天室

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python continue语句用法实例
Mar 11 Python
Python检测网络延迟的代码
May 15 Python
Python2和Python3.6环境解决共存问题
Nov 09 Python
Pandas 按索引合并数据集的方法
Nov 15 Python
对python读取zip压缩文件里面的csv数据实例详解
Feb 08 Python
Python 20行简单实现有道在线翻译的详解
May 15 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
Feb 20 Python
Django如何使用jwt获取用户信息
Apr 21 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
May 22 Python
Python使用Kubernetes API访问集群
May 30 Python
python APScheduler执行定时任务介绍
Apr 19 Python
python http接口自动化脚本详解
Jan 02 #Python
详解用python实现简单的遗传算法
Jan 02 #Python
一个Python最简单的接口自动化框架
Jan 02 #Python
利用Hyperic调用Python实现进程守护
Jan 02 #Python
python实现TF-IDF算法解析
Jan 02 #Python
python实现xlsx文件分析详解
Jan 02 #Python
Python实现KNN邻近算法
Jan 28 #Python
You might like
用PHP制作静态网站的模板框架(二)
2006/10/09 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
php调整服务器时间的方法
2015/04/03 PHP
PHP常用技巧汇总
2016/03/04 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
微信小程序签到功能
2018/10/31 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
python fabric使用笔记
2015/05/09 Python
python 重命名轴索引的方法
2018/11/10 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
麦当劳辞职信范文
2014/01/18 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
银行工作心得体会范文
2016/01/23 职场文书
《田忌赛马》教学反思
2016/02/19 职场文书
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android