在开始监听ServerFactory之前发送数据

时间:2013-03-02 22:53:54

标签: python-2.7 twisted

我正在建立一个服务器群。我有这个示例代码:

class MyHandler(basic.LineReceiver):
    def lineReceived(self, line):
      self.factory.sendLine("Welcome!")
    def makeConnection(self, transport):
      # what should go in here?

factory = protocol.ServerFactory()
factory.protocol = MyHandler
application = service.Application("My server")
internet.TCPServer(3030, factory).setServiceParent(application)

由于它是服务器群,我需要与已经运行的服务器建立连接(比如2.2.2.2,端口3032),并向他们发送一些控制信息,让他们知道新服务器正在监听。
我的理解是我必须使用我将要监听的套接字来发送此信息,以便其他服务器可以使用它来发送数据包。

我想我可以覆盖从BaseProtocol继承的makeConnection方法(在服务器开始监听之前调用它)。
但是我在该方法中需要做些什么来实现呢?

1 个答案:

答案 0 :(得分:0)

首先,Twisted没有“套接字”。当然,底层实现是TCP套接字,但是就Twisted IProtocolITransport以及IListeningPort来说,可以缓解很多混乱。

然而,你很困惑。 makeConnectionIProtocol上的一种方法,在连接到侦听套接字之前,不会创建任何协议。您无法将数据发送到“侦听套接字”(这由IListeningPort接口明确说明,该接口无法执行此操作),仅限于“已连接套接字”或ITransport

所以,这里的代码示例有点太小,无法提供任何有用的建议。