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()
fonte
2010-07-18 14:43:30
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
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
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. –