如何编写一个既是服务器又是客户端的扭曲服务器?
我想知道怎么创建一个既是服务器又是客户端的扭曲(Twisted)服务器。我的意思是,我希望这个反应器(reactor)能够在监听的同时,也能用来连接到同一个服务器实例,而这个实例也可以连接和监听。
1 个回答
15
调用 reactor.listenTCP
和 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()