+ -
当前位置:首页 → 问答吧 → 关于twisted的一个基础的问题

关于twisted的一个基础的问题

时间:2011-03-01

来源:互联网

Server端:
Python code
from twisted.internet import reactor,protocol
from time import ctime
PORT = 18888
class ServProtocol(protocol.Protocol):
    def connctionMade(self):
        clnt = self.clnt = self.transport.getPeer().host
        print '...connected from',clnt

    def dataReceived(self,data):
        self.transport.write('[%s] %s' %(ctime(),data))

factory = protocol.Factory()
factory.protocol = ServProtocol
print 'wating for connection...'
reactor.listenTCP(PORT,factory)
reactor.run()



Client端:
Python code
from twisted.internet import reactor,protocol
from time import ctime
HOST = 'localhost'
PORT = 8888
class ClientProtocol(protocol.Protocol):
    def connctionMade(self):
        print 'connect to %s successfully' %self.transport.getPeer().host
        self.sendData()

    def sendData(self):
        data = raw_input('>')
        if data:
            self.transport.write(data)
        else:
            self.transport.loseConnection()            

    def dataReceived(self,data):
        print data
        self.sendData()

class clientFactory(protocol.ClientFactory):
    protocol = ClientProtocol
    def clientConnectionLost(self,connector,reason):
        print 'Lost connection: %s' %reason.getErrorMessage()
        reactor.stop()
    def clientConnectionFailed(self,connector,reason):
        print 'Connection failed: %s' %reason.getErrorMessage()
        reactor.stop()

reactor.connectTCP(HOST,PORT,clientFactory())
reactor.run()

作者: w597766166   发布时间: 2011-03-01

然后在开两个python shell ,然后客户端连接超时,一直卡着,没有调用ConnctionMade

作者: w597766166   发布时间: 2011-03-01

两个端口号都是8888 上面代码里面有点小失误,不知道是不是同一台机器测试的原因~~~

作者: w597766166   发布时间: 2011-03-01