我正在尝试使用 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/