如何在Python Twisted中获取原始TCP连接主机名?

时间:2010-02-23 05:40:36

标签: python tcp twisted

使用Twisted的TCP机制,在创建协议时,关于对等方的唯一信息是其IP地址和端口。如何检索我尝试连接的原始主机名?

reactor.connectTCP('somehost.com', 80, MyFactory)

我怎么能以某种方式通过回调获得'somehost.com'?换句话说,connectTCP返回IConnector(无论它做什么) - 我如何将其与回调中的有形内容相对应,因为没有使用延迟?

2 个答案:

答案 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)

如果它是一个重要的信息,你应该明确地明确地传递它,就像你传递有关连接到主机的原因以及建立连接后要做什么的细节一样。