我正在建立一个服务器群。我有这个示例代码:
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方法(在服务器开始监听之前调用它)。
但是我在该方法中需要做些什么来实现呢?
答案 0 :(得分:0)
首先,Twisted没有“套接字”。当然,底层实现是TCP套接字,但是就Twisted IProtocol
和ITransport
以及IListeningPort
来说,可以缓解很多混乱。
然而,你很困惑。 makeConnection
是IProtocol
上的一种方法,在连接到侦听套接字之前,不会创建任何协议。您无法将数据发送到“侦听套接字”(这由IListeningPort
接口明确说明,该接口无法执行此操作),仅限于“已连接套接字”或ITransport
。
所以,这里的代码示例有点太小,无法提供任何有用的建议。