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