twisted框架是一个完整的事件驱动的网络框架,利用它既能使用也能开发完整的异步网络应用程序和协议。
用python的twisted框架搭建一个服务器和客户端
服务器
from twisted.internet import protocol, reactor from time import ctime PORT = 21566 class TSServProtocol(protocol.Protocol): def connectionMade(self): #重写connectMade方法 clnt = self.clnt = self.transport.getPeer().host print('...connect from', clnt) def dataReceive(self, data): #接收数据 self.transport.write('[%s] %s' %(ctime(), data.encode())) factory = protocol.Factory() #创建了一个协议工厂,每次得到一个接入连接时,都能制造协议的一个实例,然后在reactor中安装一个TCP监听器,以此检查服务请求, factory.protocol = TSServProtocol print('waiting for connection...') reactor.listenTCP(PORT, factory) reactor.run()
客户端
from twisted.internet import protocol, reactor HOST = 'localhost' PORT = 21566 class TSClntProtocol(protocol.Protocol): def senData(self): data = input('>') data = data.encode() if data: print('...sending %s ....' % data) self.transport.loseConnection() #执行losseConnection关闭套接字 def connectionMade(self): self.senData() def dataReceived(self, data): print(data) self.senData() class TSClntFactory(protocol.ClientFactory): protocol = TSClntProtocol clientConnectionLost = clientConnectionFailed = lambda self,connector, reason:reactor.stop() reactor.connectTCP(HOST, PORT, TSClntFactory()) #创建客户端工厂,创建了一个到服务器的连接并运行reactor reactor.run()