Chinaunix

标题: 谁能提供一下简单的基于twisted的聊天室代码吗? [打印本页]

作者: xmichen    时间: 2007-04-03 09:01
标题: 谁能提供一下简单的基于twisted的聊天室代码吗?
谁能提供一下简单的基于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()


复制代码

作者: xmichen    时间: 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()


复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2