Python 2.7 在开始侦听之前发送数据

Python 2.7 在开始侦听之前发送数据,python-2.7,twisted,Python 2.7,Twisted,我正在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()

我正在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方法,在服务器开始侦听之前调用它。
但我必须在该方法内部做些什么才能实现这一点呢?

首先,Twisted没有套接字。当然,底层实现是TCP套接字,但从Twisted IProtocols、ITransports和IListeningPorts的角度讲,可以减轻很多混乱

然而,你感到困惑。makeConnection是IProtocol上的一种方法,在有东西连接到侦听套接字之前,不会创建任何协议。您不能将数据发送到侦听套接字这一点由IListeningPort接口明确说明,该接口没有执行此操作的方法,只能发送到连接的套接字或ITransport


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

谢谢!是的,在我发布问题后的一段时间,我意识到它有问题,因为构造函数在建立连接之前不会被调用。另外,服务器群看起来像一个图,对于某些节点,我必须通知两个或多个服务器,这使得不可能使用同一个套接字。因此,我决定使用python的网络功能来实现这一点。无论如何,它的使用相当简单。使用python的网络功能吗?你在说什么?现在我担心你做了更奇怪的事情:。我在考虑使用Python API上的套接字库连接到我的其他服务器,而不是使用Twisted引擎。然而,我发现了一些类似于我需要的东西。它向服务器发送大量信息,并监听具有相同反应器的客户端。我只需要使用reactor.connectTCP多次,然后reactor.listenTCP来监听客户机。太好了,很高兴听到你明白了!