2010-07-18 12 views

Respuesta

15

Llame reactor.listenTCP y reactor.connectTCP. Puede tener tantos tipos diferentes de conexiones, servidores o clientes, como desee.

Por ejemplo:

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 .. No entiendo cómo utilizar el mismo código para conectarse en el servidor escucha, ¿puedes aclararme por favor? – Marconi

+0

también, ¿tiene alguna idea de cómo podría usar esto junto con la normación? Digamos, mientras que el servidor/cliente puede aceptar/conectar en el fondo, también quiero poder ingresar comandos. – Marconi

+0

El código anterior hace una conexión saliente. Eso es lo que hace connectTCP en lineReceived. ¿En qué se diferencia esto de lo que quieres? Además, para usarlo con stdio, simplemente cree una instancia twisted.internet.stdio.StandardIO en algún momento. Al igual que listenTCP y connectTCP, es una fuente de eventos que puede crear y coexistir con casi cualquier fuente de eventos de Twisted. –

Cuestiones relacionadas