免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3884 | 回复: 1
打印 上一主题 下一主题

谁能提供一下简单的基于twisted的聊天室代码吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-03 09:01 |只看该作者 |倒序浏览
谁能提供一下简单的基于twisted的聊天室代码吗?
基于telnet服务的
只要最简单的就好了,监听一个端口,接受CLIENT连接
每个CLIENT连接的时候,向所有已经连接的CLIENT broardcast一个某某登陆的消息
下面是参考网上的文章写的,但不知道如何实现broardcast消息。。
原想在connectionMade里面增加一个LIST记录所有客户端
好象也不行,,请指教



  1. #!/usr/local/python24/bin/python
  2. #-*- encoding:gb2312 -*-

  3. from twisted.internet import protocol
  4. from twisted.protocols import basic
  5. from twisted.python import log
  6. from twisted.internet import reactor
  7. import sys

  8. class ConfigServer(basic.LineReceiver):
  9.     def __init__(self):
  10.         pass

  11.     def lineReceived(self,line):
  12.         if line == 'quit':
  13.             self.sendLine("Goodbye.")
  14.             self.transport.loseConnection()
  15.         else:
  16.             self.sendLine("You said: %s" % line)
  17.         
  18.     def connectionMade(self):
  19.         print "Connect from %s.." % self.transport.getHost()
  20.         self.sendLine("Welcome...%s" % self.transport.getHost())

  21.     def connectionLost(self,reason):
  22.         pass

  23. class ConfigServerFactory(protocol.ServerFactory):
  24.     protocol=ConfigServer

  25. def main():
  26.     log.startLogging(sys.stdout)
  27.     reactor.listenTCP(8080,ConfigServerFactory())
  28.     reactor.run()
  29.    
  30. if __name__ == '__main__':      
  31.     main()


复制代码

论坛徽章:
0
2 [报告]
发表于 2007-04-03 16:57 |只看该作者
研究出来了,,请指教。。


  1. #!/usr/local/python24/bin/python
  2. #-*- encoding:gb2312 -*-

  3. from twisted.internet import protocol
  4. from twisted.protocols import basic
  5. from twisted.python import log
  6. from twisted.internet import reactor
  7. import sys

  8. class ConfigServer(basic.LineReceiver):
  9.     def __init__(self):
  10.         pass

  11.     def lineReceived(self, line):
  12.         if line == 'quit':
  13.             self.sendLine("Goodbye.")
  14.             self.transport.loseConnection()
  15.         else:
  16.             self.broadcast(line)
  17.    
  18.     def broadcast(self, msg):
  19.         for client in self.factory.clients:
  20.             client.sendLine("someone said: %s" % msg);

  21.     def connectionMade(self):
  22.         self.factory.clients.append(self)
  23.         print "Connect from %s.." % self.transport.getHost()
  24.         self.sendLine("Welcome...%s" % self.transport.getHost())

  25.     def connectionLost(self, reason):
  26.         self.factory.clients.remove(self)
  27.         # self.sendLine("Disconnect...%s" % self.transport.getHost())
  28.         pass

  29. class ConfigServerFactory(protocol.ServerFactory):
  30.     protocol = ConfigServer
  31.     clients = []

  32. def main():
  33.     log.startLogging(sys.stdout)
  34.     reactor.listenTCP(8080,ConfigServerFactory())
  35.     reactor.run()
  36.    
  37. if __name__ == '__main__':      
  38.     main()


复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP