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

yipeiwu_com6年前Python基础

本文实例为大家分享了使用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设计】。

相关文章

python opencv 简单阈值算法的实现

python opencv 简单阈值算法的实现

本文先了解一个简单阈值函数,以了解一个阈值算法的具体参数。 然后比较不同阈值函数的区别。 同样的,先用一副图说明本文重要大纲: #! usr/bin/env python...

Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录

简介: MongoEngine 是一个Document-Object Mapper (想一下ORM, 但它是针对文档型数据库),Python通过它与MongoDB交互。你可能会说那PyM...

解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题

解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题

问题产生: pycharm→settings→Project interpreter→下载matplotlib包 运行代码,出现以下提示:找不到‘matplotlib'模块ModuleN...

django的model操作汇整详解

django的model操作汇整详解

单表操作 增加数据 auther_obj = {"auther_name":"崔皓然","auther_age":1} models.auther.objects.create(...

python计算书页码的统计数字问题实例

本文实例讲述了python计算书页码的统计数字问题,是Python程序设计中一个比较典型的应用实例。分享给大家供大家参考。具体如下: 问题描述:对给定页码n,计算出全部页码中分别用到多少...