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模块之StringIO使用示例
Apr 08 Python
Python基础语法(Python基础知识点)
Feb 28 Python
Python中的日期时间处理详解
Nov 17 Python
Python学习小技巧之列表项的推导式与过滤操作
May 20 Python
Python实现针对含中文字符串的截取功能示例
Sep 22 Python
Python微医挂号网医生数据抓取
Jan 24 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
pandas 层次化索引的实现方法
Jul 06 Python
python实现基于朴素贝叶斯的垃圾分类算法
Jul 09 Python
Flask框架中request、请求钩子、上下文用法分析
Jul 23 Python
Python猴子补丁知识点总结
Jan 05 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
基于PHP读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
PHP goto语句简介和使用实例
2014/03/11 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
php定时执行任务设置详解
2015/02/06 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
CodeIgniter整合Smarty的方法详解
2017/08/25 PHP
js CSS操作方法集合
2008/10/31 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
javascript检测浏览器的缩放状态实现代码
2014/09/28 Javascript
使用 NodeJS+Express 开发服务端的简单介绍
2017/04/07 NodeJs
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
2017/09/10 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
如何利用JavaScript编写一个格斗小游戏
2021/01/06 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
Python实现批量读取word中表格信息的方法
2015/07/30 Python
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
python3+requests接口自动化session操作方法
2018/10/13 Python
python使用socket实现的传输demo示例【基于TCP协议】
2019/09/24 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
个人求职信范文分享
2013/12/13 职场文书
管事部库房保管员岗位职责
2014/02/21 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
2015年远程教育工作总结
2015/05/20 职场文书
SpringBoot中获取profile的方法详解
2022/04/08 Java/Android