如何使用HttpURLConnection获取远程IP地址

4

我正在使用Java 1.6中的HttpURLConnection连接到一个URL。

我连接的服务器使用DNS轮询来在多台服务器之间分享负载。

我该如何获取我实际连接到的远程IP地址?

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

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

1
这可能会提供正确的IP地址,因为JVM缓存DNS查询,除非在JVM上禁用了它。 - nos
1
nos 是正确的:如果您已禁用 JVM 中永久 DNS 记录缓存的默认行为,则此方法可能返回不精确的结果。 - Mike Clark

4

虽然不是直接的方法,但由于JVM缓存了DNS查找结果,你可以使用InetAddress.getByName(serverName)来查找实际使用的IP地址,除非你已经设置了系统属性"networkaddress.cache.ttl"来禁用缓存。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接