2014-09-27 113 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