SRV记录的Java DNS查找

F. *_*mir 5 java dns srv

在下面的java代码中,我正在进行DNS SRV记录查找,以解析给定域名的目标域名和关联端口,例如root@1000000000.blubluzone.com.用/ HERE /下面指示的查找函数以某种方式返回null并且我无法获得查询结果(即记录数组为空).因此,在for循环中访问记录数组时会抛出空指针异常.

您认为我缺少什么使下面的代码工作.我使用的是dnsjava,相关的API jar文件可以在http://www.dnsjava.org/download/上找到 (在页面底部).提前感谢您的建议.

     import org.xbill.DNS.Lookup;
     import org.xbill.DNS.Record;
     import org.xbill.DNS.SRVRecord;
     import org.xbill.DNS.TextParseException;
     import org.xbill.DNS.Type;

     public class DNSLookup {

        public static void main(String[] args) {

          if (args.length < 1) {
             System.err.println("Usage: java -jar DNSLookup <hostname>");
             System.exit(1);
          }

          String query = "_ssh._tcp." + args[0];

          try {
            /*****HERE*********/
            Record[] records = new Lookup(query, Type.SRV).run();

            for (Record record : records) {
                 SRVRecord srv = (SRVRecord) record;

            String hostname = srv.getTarget().toString().replaceFirst("\\.$", "");
            int port = srv.getPort();

            System.out.println(hostname + ":" + port);
          }
          } catch (TextParseException e) {
             e.printStackTrace();
          }
       }
      }
Run Code Online (Sandbox Code Playgroud)

Aln*_*tak 5

您的代码很好,只是如果没有找到记录则Lookup.run()返回null不是空数组)。

例如,如果您替换_ssh._tcp_nicname._tcp然后查找,uk您将找到 .UKwhois服务器的 SRV 记录。

如果有问题,那就是你的输入参数。