4

我正在尝试使用 digg 和 Java 在 linux shell 中再次查询特定的 dns 服务器。dig 命令有效。但java方式没有。怎么了?

挖掘@dns.nic.it test.it


;; 问题部分:
;test.it。在一个

;; 权威部门:
测试它。10800 IN NS dns2.technorail.com。
测试它。10800 IN NS dns.technorail.com。
测试它。10800 在 NS dns3.arubadns.net。
测试它。10800 在 NS dns4.arubadns.cz。


java方式

        公共静态无效 rootDNSLookup(字符串域名称)抛出 NamingException {

            字符串服务器="dns://dns.nic.it";

            哈希表环境 = 新哈希表();
            env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
            env.put("java.naming.provider.url", 服务器);

            DirContext ictx = new InitialDirContext(env);
            属性 attrs = ictx.getAttributes(domainName, new String[] {"A", "AAAA", "NS", "SRV"});
            System.out.println(attrs);
            命名枚举 e = attrs.getAll();
            而(e.hasMoreElements()){
                属性 a = e.next();
                System.out.println(a.getID() + " = " + a.get());
            }

        }

java打印:

没有属性
4

1 回答 1

3

我知道这已经很长时间了,但对于我们这些一直在寻找答案的人来说,最好的方法是使用库dnsjava。您正在寻找的特定类是SimpleResolver。它有两个构造函数。不带参数使用时,它将使用系统的 DNS 设置。如果您提供 IP 地址,它将强制作为 DNS 服务器。您可以在这里找到一个很好的使用示例: https ://github.com/dnsjava/dnsjava/blob/master/dig.java

于 2018-01-10T16:55:06.627 回答