JAVA中的DNS查询

时间:2015-02-17 10:44:49

标签: java dns inetaddress

我正在使用Java中的DNS服务 - 我特意尝试查找所有google.com地址并将其显示在数组中,类似于使用nslookup运行查找:

nslookup -q=TXT _netblocks.google.com 8.8.8.8

我正在使用InetAddress,但继续遇到异常错误。由于错误引用“未知主机”,我认为InetAddress无法读取TXT记录(如果我使用google.com它可以工作,但这并不显示完整的IP范围)。以下是我的代码:

InetAddress dnsresult[] = InetAddress.getAllByName("_netblocks.google.com");
            for (int i=0; i<dnsresult.length; i++)
            System.out.println (dnsresult[i]);

如果有人能指出我正确的方向,我将不胜感激。

-JK

3 个答案:

答案 0 :(得分:4)

无法查找TXT或其他DNS记录InetAddress类。 InetAddress.getAllByName()仅查找 A AAAA 记录。

检查DNS Java是否符合您的需求。

答案 1 :(得分:4)

InetAddress没有这样做,但您可以通过JNDI DNS provider在Java中完成DNS TXT记录查找。

答案 2 :(得分:2)

以下是一个可以完成您想做的事的例子:

Attribute attr = new InitialDirContext().getAttributes("dns:_netblocks.google.com", new String[] {"TXT"}).get("TXT");
System.out.println("attr.get() = " + attr.get());
System.out.println("attr.getAll() = " + Collections.list(attr.getAll()));

如果要使用自定义dns服务器,请改用“ dns://1.1/_netblocks.google.com”。