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 相关文章推荐
rhythmbox中文名乱码问题解决方法
Sep 06 Python
python数据结构之二叉树的遍历实例
Apr 29 Python
使用C语言来扩展Python程序和Zope服务器的教程
Apr 14 Python
python框架django基础指南
Sep 08 Python
python面向对象_详谈类的继承与方法的重载
Jun 07 Python
分析python切片原理和方法
Dec 19 Python
Python即时网络爬虫项目启动说明详解
Feb 23 Python
Python 一键制作微信好友图片墙的方法
May 16 Python
python在新的图片窗口显示图片(图像)的方法
Jul 11 Python
python循环输出三角形图案的例子
Nov 22 Python
Python图像读写方法对比
Nov 16 Python
python实现企业微信定时发送文本消息的示例代码
Nov 24 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
我的论坛源代码(六)
2006/10/09 PHP
php flv视频时间获取函数
2010/06/29 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
discuz论坛更换域名,详细文件修改步骤
2020/12/09 PHP
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
2015/04/13 Javascript
jQuery三级下拉列表导航菜单代码分享
2020/04/15 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
node跨域请求方法小结
2017/08/25 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
JS Array.from()将伪数组转换成数组的方法示例
2020/03/23 Javascript
Python代码解决RenderView窗口not found问题
2016/08/28 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
python 移除字符串尾部的数字方法
2018/07/17 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
基于python实现把图片转换成素描
2019/11/13 Python
python新式类和经典类的区别实例分析
2020/03/23 Python
Python中如何引入第三方模块
2020/05/27 Python
Python SMTP配置参数并发送邮件
2020/06/16 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
python实现canny边缘检测
2020/09/14 Python
CSS3属性 line-clamp控制文本行数的使用
2020/03/19 HTML / CSS
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
电子信息专业自荐书
2014/02/04 职场文书
初一学生评语大全
2014/04/24 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
大学军训通讯稿
2015/07/18 职场文书
Java8中接口的新特性使用指南
2021/11/01 Java/Android