#/usr/bin/python# -*- coding:utf-8 -*-from twisted.internet import protocol, reactorclass Echo(protocol.Protocol): #继承Protocol类 def dataReceived(self, data): #重写dataReceived方法 self.transport.write(data) #重写transport的方法,在源代码中trasport是没有write属性的。 print '数据已经接收到:%s \n' %data, def connectionLost(self, reason='connectionDone'): #返回客户端断开的原因 print '连接结束,原因: %s' %reason def connectionMade(self): self.transport.write('已经连接到服务器\n') #连接之后返回消息给客户端# self.transport.loseConnection() #断开与客户端的连接 def makeConnection(self, transport): # 接受客户端连接的消息 self.connected = 1 # 计算连接数,具体怎么计算还没想好 self.transport = transport # 定义transport,然后调用connectionMade函数,让transport的方法生效? print self.connected print self.transport print self.connectionMade()class EchoFactory(protocol.Factory): #继承Factory类 def doStart(self): print '确认工厂协议已经被调用' def doStop(self): print '确认工厂协议已经停止' def startFactory(self): print '准备开始监听端口和回调的函数' def stopFactory(self): print '结束监听' def buildProtocol(self, addr): #重写buildProtocol return Echo() #定义返回的函数Echo(),这里因为继承了继承Factory类,所以write属性成立了。reactor.listenTCP(1234, EchoFactory()) #绑定端口,回调EchoFactory()reactor.run() #启动事件循环,脚本运行的结果 #当你telnet这个端口,输入什么字符,服务器会返回给你什么字符