我有两台服务器:
application = service.Application("APP")
factory_a = MyFactory()
service_1 = internet.TCPServer(LPORT_1, factory_a)
service_1.setServiceParent(application)
factory_b = MyOtherFactory()
service_2 = internet.TCPServer(LPORT_2, factory_b)
service_2.setServiceParent(application)
现在如何将从service_1收到的数据发送到service_2? service_2仅作为从service_1
收到的数据的echo服务器答案 0 :(得分:3)
两种服务都不会实际发送或接收任何数据。所有服务都是管理启动和关闭。
工厂实际上也没有发送或接收任何数据。所有工厂都会创建协议来处理连接。
但由于工厂寿命长且协议是短暂的,工厂通常可以作为协调其他对象之间活动的对象。
为factory_a
提供factory_b
和/或反之亦然。现在,这些工厂创建的协议都可以获得对其他工厂的引用:
factory_a.factory_b = factory_b
factory_b.factory_a = factory_a
class FactoryAProtocol(Protocol):
def foo(self):
self.factory.factory_b
如果要将数据导入其他工厂创建的协议,则需要更进一步。 Twisted中的基本工厂类不会跟踪它们创建的协议。但是,twisted.protocols.policies.WrappingFactory
可以(或者您可以自己为您的工厂实施简单的跟踪逻辑)。
一旦factory_b
拥有它创建的协议的集合......
class FactoryAProtocol(Protocol):
def foo(self):
self.factory.factory_b.those_protocols[7]
换句话说,How do I make input on one connection result in output on another?