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计算最小优先级队列代码分享
Dec 18 Python
Python中os.path用法分析
Jan 15 Python
详解MySQL数据类型int(M)中M的含义
Nov 20 Python
Python编程给numpy矩阵添加一列方法示例
Dec 04 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
django的登录注册系统的示例代码
May 14 Python
Python爬虫框架Scrapy常用命令总结
Jul 26 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
python判断完全平方数的方法
Nov 13 Python
Python 正则表达式匹配字符串中的http链接方法
Dec 25 Python
python如何实现从视频中提取每秒图片
Oct 22 Python
Python图像识别+KNN求解数独的实现
Nov 13 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
索尼ICF-SW100收音机评测
2021/03/02 无线电
利用static实现表格的颜色隔行显示
2006/10/09 PHP
php实现统计邮件大小的方法
2013/08/06 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
PHP7移除的扩展和SAPI
2021/03/09 PHP
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
充分发挥Node.js程序性能的一些方法介绍
2015/06/23 Javascript
详解JavaScript的Polymer框架中的通知交互
2015/07/29 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
Vue.js框架路由使用方法实例详解
2017/08/25 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
JavaScript类的继承多种实现方法
2020/05/30 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
python实现自动重启本程序的方法
2015/07/09 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
口腔医学技术应届生求职信
2013/11/09 职场文书
护理专业毕业生自荐信范文
2014/01/05 职场文书
考试作弊被抓检讨书
2014/01/10 职场文书
竞选班委演讲稿
2014/04/28 职场文书
青春励志演讲稿
2014/04/29 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
2014年党小组工作总结
2014/12/20 职场文书
解决tk mapper 通用mapper的bug问题
2021/06/16 Java/Android