1

我正在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 方法(在服务器开始监听之前调用它)。
但是我必须在该方法中做什么才能实现这一目标?

4

1 回答 1

0

首先,Twisted 没有“套接字”。底层实现当然是 TCP 套接字,但是从 Twisted 和 s 和 s 的角度来说IProtocol可以ITransport减轻IListeningPort很多混乱。

然而,你很困惑。makeConnection是 on 的一个方法,在连接到侦听套接字IProtocol之前不会创建任何协议。您不能将数据发送到“正在侦听的套接字”(这由接口明确,它没有这样做的方法),只能发送到“连接的套接字”,或者.IListeningPortITransport

因此,您的代码示例太少了,无法提供任何有用的建议。

于 2013-03-03T00:18:43.407 回答