【发布时间】:2012-07-23 11:42:45
【问题描述】:
我正在开发基于 Twisted 框架的 P2P 应用程序。因此,我可以同时拥有传入和传出连接。有没有简单的方法来区分它们?目前我只是创建另一个工厂,将连接标记为传出并将所有工厂调用委托给原始工厂,但必须有更简单的方法。
class OutgoingProtocolFactory(MyProtocolFactory):
"""
A rather simple factory that is used to earmark connections as outgoing.
"""
def __init__(self, parentFactory):
self.factory = parentFactory
def buildProtocol(self, addr):
connection = MyProtocolFactory.buildProtocol(self.factory, addr)
connection.factory = self.factory
connection.incoming = False
return connection
def clientConnectionFailed(self, connector, reason):
self.factory.clientConnectionFailed(connector, reason)
def clientConnectionLost(self, connector, reason):
self.factory.clientConnectionLost(connector, reason)
有什么想法吗?
【问题讨论】:
-
一个套接字是一个套接字是一个套接字...即无法区分通过接受连接或连接到远程程序创建的套接字。唯一的方法是自己跟踪它,就像现在一样。
-
是的,我知道,但现在我正在使用另一个工厂,它只是将其标记为未传入,即传出,并将其他所有内容都委托给原始工厂,这似乎很愚蠢。如果 twisted 能告诉我连接是来自我这边的 connectTCP 还是来自 listenTCP 在这种情况下它会传入,那就太好了。