wisted 是一个完全事件驱动的网络框架。 它允许你使用和开发完全异步的网络应用程序和协议。 在写本书的时候,它还不是 Python 标准库的一部分,要使用它,你必需另外下载并安装它(在本章 最后能找到链接)。它为你创建一个完整系统提供了很大的帮助。系统中可以有:网络协议,线程, 安全和认证,聊天/即时通讯,数据库管理,关系数据库集成,网页/互联网,电子邮件,命令行参 数,图形界面集成等。
使用 Twisted Internet 类的时间戳 TCP 服务器--客户端
1 #encoding=utf-8 2 #Twisted Reactor Timestamp TCP 客户端 3 from twisted.internet import protocol,reactor 4 5 host = 'localhost' 6 port = 21567 7 8 class TSCIntProtocol(protocol.Protocol): 9 # 重写函数 connectionMade()和 dataReceived()。 10 # 新加一个自己的函数 sendData(),用于在需要发送数据时调用 11 def sendData(self): 12 data = raw_input('>') 13 if data: 14 print 'sending %s ' %data 15 self.transport.write(data) 16 else: 17 self.transport.loseConnection() 18 19 def connectionMade(self): 20 self.sendData() 21 22 def dataReceived(self,data): 23 print data 24 self.sendData() 25 26 class TSCIntFactory(protocol.ClientFactory): 27 protocol = TSCIntProtocol 28 clientConnectionLost = clientConnectionFailed = 29 lambda self,connector,reason:reactor.stop() 30 31 reactor.connectTCP(host,port,TSCIntFactory()) 32 reactor.run()
1 #encoding=utf-8 2 from twisted.internet import protocol,reactor 3 from time import ctime 4 5 port = 21567 6 7 class TSServProtocol(protocol.Protocol): 8 #重写 connectionMade()函数,这个函数在有客户连接的时候被调用 9 def connectionMade(self): 10 clnt = self.clnt = self.transport.getPeer().host 11 print 'connected from',clnt 12 13 #dataReceived()函数,这个函数在客户通过网络发送数据过来时被调用。 14 #reactor 把数据当成参数传到这个函数中,这样我们就不用自己去解析数据 15 def dataReceived(self,data): 16 self.transport.write('[%s] %s' % (ctime(),data)) 17 18 # 我们创建一个 protocol 工厂。它被称为“工厂”是因为,每次我们 19 # 有连接进来的时候,它都会“生产”一个我们的 protocol 对象。 20 factory = protocol.Factory() 21 factory.protocol = TSServProtocol 22 print 'waiting for connection' 23 24 # 在 reactor 中安装一个 TCP 25 # 监听器以等待服务请求。当有请求进来时, 26 # 创建一个 TSServProtocol 实例来服务那个客户。 27 reactor.listenTCP(port,factory) 28 reactor.run()
使用 Twisted Internet 类的时间戳 TCP 服务器--服务端