2010-02-23 4 views
1

Avec les mécanismes TCP de Twisted, lorsqu'un protocole est créé, les seules informations sur l'homologue sont son adresse IP et son port. Comment puis-je récupérer le nom d'hôte d'origine avec lequel j'ai essayé de me connecter?Comment obtenir le nom d'hôte de la connexion TCP d'origine dans Python Twisted?

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

Comment puis-je jamais 'somehost.com' par un rappel en quelque sorte? En d'autres termes, connectTCP renvoie un IConnector (quoi qu'il fasse) - comment puis-je correspondre à quelque chose de tangible dans un rappel, car aucun différé n'est utilisé?

Répondre

2

La réponse simple est, "Enregistrez vous-même".

Mise à jour votre exemple:

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

Si c'est un élément d'information important, vous devriez être de passage explicitement autour explicitement, dans la même façon que vous passeriez autour des détails sur la raison pour laquelle vous vous êtes connecté à un hôte et que faire une fois qu'une connexion est établie.

3

La réponse de Jerub a un sens sémantique. Après avoir creusé le code Twisted, il y a une façon plus directe et plus directe de faire ce que j'essaie d'accomplir.

Dans le protocole:

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

    # This is the original destination requested 
    connector.getDestination() 
+0

Comment pourrais-je obtenir ce à partir d'un render_GET ou render_POST? L'objet 'request' a un' transport', mais n'a pas d'attribut 'connector'. Ni 'Resource' ni' Site' n'a ''. –

Questions connexes