Appelez reactor.listenTCP
et reactor.connectTCP
. Vous pouvez avoir autant de types différents de connexions - serveurs ou clients - que vous le souhaitez.
Par exemple:
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 .. Je ne comprends pas comment utiliser le même code ci-dessus pour se connecter sur le serveur d'écoute, pouvez-vous me éclairer s'il vous plaît? – Marconi
aussi, avez-vous une idée de comment je pourrais utiliser cela en conjonction avec le standardio? Dites, alors que le serveur/client peut accepter/se connecter en arrière-plan, je veux aussi pouvoir entrer des commandes. – Marconi
Le code ci-dessus établit une connexion sortante. C'est ce que fait le connectTCP dans lineReceived. En quoi est-ce différent de ce que vous voulez? Aussi, pour l'utiliser avec stdio, il suffit de créer une instance de twisted.internet.stdio.StandardIO à un moment donné. Comme listenTCP et connectTCP, c'est une source d'événements que vous pouvez créer et coexister avec à peu près n'importe quelle autre source d'événement de Twisted. –