它是一个从IP打印主机名但不打印HostName的程序

时间:2011-09-10 12:51:42

标签: java dns

package networking;
import java.net.*;
public class HostIpAddess {
    public static void main(String args[]){
        try {
            InetAddress address = InetAddress.getByName("204.29.207.217");
            System.out.println("IP Name:"+address.getHostName());
        }catch (UnknownHostException ex) {
            System.out.println("Error");
        }
    }
}

为什么程序提供IP地址而不是反向DNS查找的结果?

3 个答案:

答案 0 :(得分:3)

IP地址204.29.207.217没有PTR记录。

http://en.wikipedia.org/wiki/Reverse_DNS_lookup

答案 1 :(得分:2)

您的代码正在运行:问题是InetAddress.getByName仅返回主机名

  • 如果存在(即反向查找返回主机名)
  • 如果JVM能够执行反向查找(来自文档“[...]如果不允许该操作,它将返回IP地址的文本表示[...]”

在您的情况下,给定IP地址的反向DNS查找不会返回结果:

$ host 204.29.207.217
Host 217.207.29.204.in-addr.arpa not found: 2(SERVFAIL)

您可以在http://www.dmoz.org/search?q=204.29.207.217&cat=all&all=no

执行测试查找

答案 2 :(得分:0)

通过阅读Java API文档(您是否阅读过它?)我建议您尝试使用getCanonicalHostName()