Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5119937
  • 博文数量: 921
  • 博客积分: 16037
  • 博客等级: 上将
  • 技术积分: 8469
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 02:08
文章分类

全部博文(921)

文章存档

2020年(1)

2019年(3)

2018年(3)

2017年(6)

2016年(47)

2015年(72)

2014年(25)

2013年(72)

2012年(125)

2011年(182)

2010年(42)

2009年(14)

2008年(85)

2007年(89)

2006年(155)

分类: Python/Ruby

2011-12-08 13:22:29

如果你之前没有安装Twisted模块,则先安装(包括安装zope.interface模块
下载最新版本的tar包,然后安装
安装方法很简单,都是:
1. 解压缩
2. python setup.py build
3. python setup.py install
 
代码如下:
  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. # vim: set ai cindent et sw=4 ts=4 nowrap foldmethod=marker:

  4. from twisted.internet.protocol import Factory
  5. from twisted.protocols.basic import LineOnlyReceiver
  6. from twisted.internet import reactor

  7. class Chat(LineOnlyReceiver):
  8.     def lineReceived(self, data):
  9.          self.factory.sendAll("%s: %s" % (self.getId(), data))

  10.     def getId(self):
  11.         return str(self.transport.getPeer())

  12.     def connectionMade(self):
  13.         print "New connection from", self.getId()
  14.          self.transport.write("Welcome to the chat server, %s\n" % self.getId())
  15.          self.factory.addClient(self)

  16.     def connectionLost(self, reason):
  17.          self.factory.delClient(self)

  18. class ChatFactory(Factory):
  19.      protocol = Chat

  20.     def __init__(self):
  21.          self.clients = []

  22.     def addClient(self, newclient):
  23.          self.clients.append(newclient)

  24.     def delClient(self, client):
  25.          self.clients.remove(client)

  26.     def sendAll(self, message):
  27.         for proto in self.clients:
  28.              proto.transport.write(message + "\n")

  29. reactor.listenTCP(51423, ChatFactory())
  30. reactor.run()
阅读(1464) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~