2009-12-17 15 views
3

Je suis en train de trouver l'adresse IP (et non le nom d'hôte) qui ont répondu à mon WebRequest en C#. Je ne souhaite pas effectuer de résolution DNS, car il s'agit de cas où les enregistrements DNS renvoyés ne sont pas les serveurs répondant à la demande. Ex:Comment obtenir l'adresse IP du serveur répondant à WebResponse C#

client -> Load Balancer -> Serveur Web

Le serveur DNS répondrait avec IP de l'équilibreur de charge. En supposant que le serveur Web qui répond ne retourne pas à travers l'équilibreur de charge, l'adresse IP serait alors le serveur Web réel que j'essaie de trouver.

+0

Pourquoi avez-vous besoin de faire cela? Que ferez-vous, par exemple, si le serveur a plusieurs adresses IP? –

Répondre

1

Avez-vous accès au code côté serveur? Ou à la configuration du serveur web? Vous pouvez toujours placer les adresses IP des machines, ou tout autre identificateur que vous souhaitez, dans un en-tête personnalisé et les rechercher sur le client.

Quant à votre question initiale, je ne crois pas que l'information est exposée partout par les classes HttpWebRequest/HttpWebResponse.

+0

Non, malheureusement, je ne le ferais pas, sinon ce serait une excellente option. – Traderde

1

Je pense que vous devrez aller OSI-trempage, et créer et exploiter votre propre prise;
alors vous aurez accès à la propriété RemoteEndpoint (au moins après votre prise est connecté ou connecté à) comme ceci:

Socket sprocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sprocket.Connect("www.google.com", 80);
string IPAddressOfRespondingServer = ((IPEndPoint)sprocket.RemoteEndPoint).Address.ToString();

+0

Ce serait l'adresse IP à l'autre extrémité de la connexion, pas nécessairement une adresse IP de la réponse à une demande - ils pourraient être différents avec les serveurs proxy ou les équilibreurs de charge impliqués. –

+0

Je suppose que vous avez raison .... hmmm .... Je pense que je vais juste de côté avec votre, mrSaunders c'est, commenter à la question; pourquoi en effet? Je serais intéressé de voir comment c'est fait. Existe-t-il une méthode pare-balles pour obtenir l'adresse IP par les moyens discutés, qui ne nécessite pas de «peaufiner» les paquets ou quoi que ce soit aux deux extrémités de la connexion? –