使用Twisted的TCP机制,在创建协议时,关于对等方的唯一信息是其IP地址和端口。如何检索我尝试连接的原始主机名?
reactor.connectTCP('somehost.com', 80, MyFactory)
我怎么能以某种方式通过回调获得'somehost.com'
?换句话说,connectTCP
返回IConnector
(无论它做什么) - 我如何将其与回调中的有形内容相对应,因为没有使用延迟?
答案 0 :(得分:3)
Jerub的回答在语义上是有道理的。在深入研究Twisted代码之后,有一种更方便,更直接的方式来实现我想要实现的目标。
在协议中:
def connectionMade(self):
# This is the original connector that connectTCP returned
connector = self.transport.connector
# This is the original destination requested
connector.getDestination()
答案 1 :(得分:2)
简单的答案是“自己录制”。
更新您的示例:
myfactory = MyFactory(connecthost='somehost.com')
reactor.connectTCP(myfactory.connecthost, 80, myfactory)
如果它是一个重要的信息,你应该明确地明确地传递它,就像你传递有关连接到主机的原因以及建立连接后要做什么的细节一样。