Как получить исходное имя хоста TCP-соединения в Python Twisted? - PullRequest
1 голос
/ 23 февраля 2010

При использовании TCP-механизмов Twisted при создании протокола единственной информацией об узле является его IP-адрес и порт. Как я могу получить исходное имя хоста, с которым я пытался соединиться?

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

Как я могу когда-нибудь получить 'somehost.com' через обратный вызов? Другими словами, connectTCP возвращает IConnector (что бы он ни делал) - как мне соотнести это с чем-то осязаемым в обратном вызове, поскольку никакие отсроченные не используются?

Ответы [ 2 ]

3 голосов
/ 23 февраля 2010

Ответ Иеруба имеет смысл семантически. После изучения кода Twisted есть более удобный и прямой способ сделать именно то, что я пытаюсь достичь.

В протоколе:

def connectionMade(self):
    # This is the original connector that connectTCP returned
    connector = self.transport.connector

    # This is the original destination requested
    connector.getDestination()
2 голосов
/ 23 февраля 2010

Простой ответ: «Запишите это сами».

Обновление вашего примера:

myfactory = MyFactory(connecthost='somehost.com')
reactor.connectTCP(myfactory.connecthost, 80, myfactory)

Если это важная часть информации, вы должны явно передавать ее явно,во многом так же, как вы передаете подробности о том, почему вы подключились к хосту и что делать после установления соединения.

...