from twisted.internet.protocol import Protocol from twisted.internet import reactor from twisted.internet.protocol import Factory from twisted.internet.endpoints import TCP4ServerEndpoint class Echo(Protocol): def __init__(self,factory): self.factory=factory def connectionMade(self): self.factory.numProtocols=self.factory.numProtocols+1 self.transport.write("welcome!\nthere are currently %d open connections.\n"%(self.factory.numProtocols,)) def dataReceived(self,data): mydata=data.strip() if mydata!="quit" and mydata!="quit\r\n" and mydata!="quit\r": self.transport.write(data) else: self.transport.write("byebye\n") self.transport.numProtocols=self.factory.numProtocols-1 self.transport.loseConnection() def connectionLost(self, reason): self.factory.numProtocols = self.factory.numProtocols - 1 class EchoFactory(Factory): numProtocols=0 def __init__(self): self.myfactory=self def buildProtocol(self,addr): return Echo(self.myfactory) endpoint=TCP4ServerEndpoint(reactor,8001) endpoint.listen(EchoFactory()) reactor.run()
输入quit退出连接,统计连接数量。