2010-07-18 17 views

cevap

15

reactor.listenTCP ve reactor.connectTCP'u arayın. İstediğiniz kadar çok farklı türde bağlantıya sahip olabilirsiniz - sunucular veya istemciler. Örneğin

:

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

um .. Ben nasıl bana lütfen aydınlatmak, dinleme sunucusunda bağlanmak için yukarıdaki aynı kodu kullanmak alamadım? – Marconi

+0

da, bunu standardio ile birlikte nasıl kullanabileceğimin bir fikriniz var mı? Diyelim ki, sunucu/istemci arka plan üzerinde kabul/bağlantı kurabilirken, aynı zamanda komutları da girmek istiyorum. – Marconi

+0

Yukarıdaki kod giden bir bağlantı yapıyor. LineReceived içinde connectTCP böyle yapar. Bu senin istediğin şeyden nasıl farklı? Ayrıca, stdio ile kullanmak için, bir noktada bir twisted.internet.stdio.StandardIO örneği oluşturun. ListenTCP ve connectTCP gibi, Twisted'in diğer herhangi bir etkinlik kaynağıyla oluşturabileceğiniz ve birlikte oluşturabileceğiniz bir etkinlik kaynağıdır. –

İlgili konular