java - 在 Java 中查询特定的 DNS 服务器

标签 java dns dig

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

 dig @dns.nic.it test.it


;; QUESTION SECTION:
;test.it.           IN  A

;; AUTHORITY SECTION:
test.it.        10800   IN  NS  dns2.technorail.com.
test.it.        10800   IN  NS  dns.technorail.com.
test.it.        10800   IN  NS  dns3.arubadns.net.
test.it.        10800   IN  NS  dns4.arubadns.cz.


java方式

        public static void rootDNSLookup(String domainName) throws NamingException{

            String server="dns://dns.nic.it";

            Hashtable env = new Hashtable();
            env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
            env.put("java.naming.provider.url",    server);

            DirContext ictx = new InitialDirContext(env);
            Attributes attrs = ictx.getAttributes(domainName, new String[] {"A", "AAAA", "NS", "SRV"});
            System.out.println(attrs);
            NamingEnumeration e = attrs.getAll();
            while(e.hasMoreElements()) {
                Attribute a = e.next();
                System.out.println(a.getID() + " = " + a.get());
            }

        }

java 打印:

No attributes

最佳答案

最好的方法是使用库 dnsjava

您要查找的特定类是 SimpleResolver。它有两个构造函数。当不带参数使用时,它将使用系统的 DNS 设置。如果您提供 IP 地址,它将强制将该地址作为 DNS 服务器。 您可以在这里找到一个很好的用法示例:dnsjava Examples .

关于java - 在 Java 中查询特定的 DNS 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26080161/

相关文章:

Java泛型集合疑惑

java - 我们是否可以说,通过同步代码块,我们使所包含的语句成为原子的?

mysql - 用户首选项/设置的 ERD

java - 如果我有 IP,则跳过 Java 的 DNS 查询

c - 解析 DNS 响应

unix - Dig + trace不执行跟踪

networking - 为什么dig命令只返回google.com的一个IP地址?

linux - 如何将 dig 命令的输出打印到文本文件

java - HotSpot View 中 "java.lang.Thread.run"中的高自拍时间意味着什么?

java - 如何允许我的字符串输入仅包含数字而不包含字母