2010-01-21 4 views
4

Je me connecte à une URL avec un HttpURLConnection en Java 1.6Comment puis-je obtenir l'adresse IP à distance avec HttpURLConnection

Le serveur je connecter utilise DNS round robin pour partager la charge entre plusieurs serveurs.

Comment puis-je obtenir l'adresse IP distante à laquelle je me suis réellement connecté?

HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); 
//I then need something like this! 
log(SUCCESS, "made connection to: " + urlConn.getRemoteIp()); 

Répondre

4
URL url = new URL("http://yahoo.com"); 
String host = url.getHost(); 
InetAddress address = InetAddress.getByName(host); 
String ip = address.getHostAddress(); 
+1

Et cela peut donner la bonne adresse IP puisque le jvm met en cache les requêtes DNS, sauf si elle est désactivée sur le jvm – nos

+1

Nous avons raison: si vous avez désactivé le comportement par défaut de la mise en cache DNS permanente dans la JVM, cette approche pourrait retourner résultats imprécis. –

4

Pas directement, mais étant donné que la machine virtuelle Java est mise en cache des requêtes DNS, vous pouvez utiliser InetAddress.getByName (serverName) pour trouver l'adresse IP réelle utilisée, sauf si vous avez défini la propriété système « networkaddress. cache.ttl "pour désactiver le cache.

Questions connexes