2010-07-18 3 views

답변

15

reactor.listenTCPreactor.connectTCP으로 전화하십시오. 원하는만큼 다양한 종류의 연결 (서버 또는 클라이언트)을 가질 수 있습니다. 예를 들어

:

from twisted.internet import protocol, reactor 
from twisted.protocols import basic 

class SomeServerProtocol(basic.LineReceiver): 
    def lineReceived(self, line): 
     host, port = line.split() 
     port = int(port) 
     factory = protocol.ClientFactory() 
     factory.protocol = SomeClientProtocol 
     reactor.connectTCP(host, port, factory) 

class SomeClientProtocol(basic.LineReceiver): 
    def connectionMade(self): 
     self.sendLine("Hello!") 
     self.transport.loseConnection() 

def main(): 
    import sys 
    from twisted.python import log 

    log.startLogging(sys.stdout) 
    factory = protocol.ServerFactory() 
    factory.protocol = SomeServerProtocol 
    reactor.listenTCP(12345, factory) 
    reactor.run() 

if __name__ == '__main__': 
    main() 
+0

음 .. 내가 어떻게 당신이 제발 계몽 수, 청취 서버에 연결하기 위해 위와 같은 코드를 사용하지 않는? – Marconi

+0

또한 standardio와 함께 사용할 수도 있습니다. 서버/클라이언트가 배경에서 수락/연결할 수 있지만 명령을 입력 할 수 있기를 원합니다. – Marconi

+0

위의 코드는 나가는 연결을 만듭니다. 이것이 바로 lineReceived의 connectTCP가하는 ​​일입니다. 이게 당신이 원하는 것과 어떻게 다릅니 까? 또한 stdio와 함께 사용하려면 twisted.internet.stdio.StandardIO 인스턴스를 만들어야합니다. listenTCP 및 connectTCP와 마찬가지로이 이벤트 소스는 Twisted의 다른 이벤트 소스와 함께 만들 수 있고 함께 존재할 수 있습니다. –

관련 문제