2010-07-18 17 views

risposta

15

Chiama reactor.listenTCP e reactor.connectTCP. Puoi avere tanti diversi tipi di connessioni (server o client) come desideri.

Ad esempio:

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

ehm .. Io non capisco come utilizzare lo stesso codice di cui sopra per il collegamento sul server di ascolto, mi puoi illuminarmi per favore? – Marconi

+0

inoltre, hai qualche idea di come potrei usare questo in congiunzione con lo standardio? Dite, mentre il server/client può accettare/connettersi sullo sfondo, voglio anche poter inserire i comandi. – Marconi

+0

Il codice sopra rende una connessione in uscita. Questo è ciò che fa connectTCP in lineReceived. Come è diverso da quello che vuoi? Inoltre, per usarlo con stdio, basta creare un'istanza twisted.internet.stdio.StandardIO ad un certo punto. Come listenTCP e connectTCP, è una fonte di eventi che è possibile creare e coesistere con qualsiasi altra origine di eventi da Twisted. –

Problemi correlati