Tag: gethostbyaddr

InetAddress.getCanonicalHostName()返回IP而不是Hostname

我在堆栈溢出中寻找了如何在Java中进行IP查找,但答案与我已经在做的事情相匹配,并没有解决我的问题。 这是我的代码: public void printHostname( String ip ) { System.out.println( InetAddresses.forString( ip ).getCanonicalHostName( ) ); } InetAddresses只是一个来自guava库的实用程序类来获取InetAdress 。 问题:此代码与某些IP地址一样正常工作,而不是其他一些地址。 一个工作的例子 例如,对于IP 157.55.39.29,输出为: msnbot-157-55-39-29.search.msn.com 根据Linux host命令,此结果似乎正确: > host 157.55.39.29 29.39.55.157.in-addr.arpa domain name pointer msnbot-157-55-39-29.search.msn.com. 一个不成功的例子 对于IP 123.125.71.75, host命令返回: > host 123.125.71.75 75.71.125.123.in-addr.arpa domain name pointer baiduspider-123-125-71-75.crawl.baidu.com. 但是我的Java代码的输出是: 123.125.71.75 而预期的产出应该是 baiduspider-123-125-71-75.crawl.baidu.com getCanonicalHostName方法的javadoc说: 返回: 此IP地址的完全限定域名,或者如果安全检查不允许操作,则为IP地址的文本表示。 但我很确定这不是一个安全检查的问题……或者我不明白什么是错的。 你有什么建议来解释这种行为吗? 你有解决方法吗? […]