python Twisted框架

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()
原文地址:https://www.cnblogs.com/yeshengCqupt/p/13472070.html