2014-09-27 105 views
2

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

 
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 
+0

此代码不打印“无属性”。 – EJP 2014-09-28 05:12:19

+0

是否为您打印任何内容? – user121196 2014-09-28 08:55:00

+0

此代码中没有任何内容打印“无属性”。请解释或修改你的问题。 – EJP 2014-09-28 23:25:03

回答

0

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