Java的DNS查找SRV记录(Java DNS Lookup for SRV records)

2019-07-28 23:00发布

在下面的Java代码,我想提出一个DNS SRV记录查找来解析目标域名和相关端口对于给定的域名,如root@1000000000.blubluzone.com。 用查找功能指示/ HERE /下方返回null不知何故,我无法获得AA的查询结果(即记录阵列为空)。 因此,当记录阵列中的被访问环空指针异常被抛出。

你以为我失踪使下面的代码工作。 我使用使用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();
          }
       }
      }

Answer 1:

您的代码是好的,但Lookup.run()返回null ,如果不找到任何记录( 不是一个空数组)。

例如,如果更换_ssh._tcp_nicname._tcp然后查找uk ,你会发现在.UK SRV记录whois服务器。

如果有一个问题,它与你的输入参数。



文章来源: Java DNS Lookup for SRV records
标签: java dns srv