Как записать скрученный сервер, который является также клиентом?

Как я создаю скрученный сервер, это - также клиент? Я хочу, чтобы реактор послушал, в то время как одновременно это может также быть использование для соединения с тем же экземпляром сервера, который может также соединиться и послушать.

9
задан Marconi 18 July 2010 в 09:33
поделиться

1 ответ

Call reactor.listenTCP and reactor.connectTCP. Вы можете иметь столько различных типов соединений - серверов или клиентов - сколько захотите.

Например:

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()
15
ответ дан 4 December 2019 в 13:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: