Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SRV记录的Java DNS查找_Java_Dns_Srv - Fatal编程技术网

SRV记录的Java DNS查找

SRV记录的Java DNS查找,java,dns,srv,Java,Dns,Srv,在下面的java代码中,我正在进行DNS SRV记录查找,以解析给定域名的目标域名和相关端口,例如root@1000000000.blubluzone.com. 以/HERE/below指示的查找函数以某种方式返回null,并且我无法获得查询结果(即记录数组为null)。因此,在for循环中访问记录数组时会引发空指针异常 您认为我缺少什么使以下代码正常工作。我使用的是dnsjava,相关的API jar文件位于(页面底部)。提前谢谢你的建议 import org.xbill.DNS.L

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

您认为我缺少什么使以下代码正常工作。我使用的是dnsjava,相关的API jar文件位于(页面底部)。提前谢谢你的建议

     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();
          }
       }
      }
import org.xbill.DNS.Lookup;
导入org.xbill.DNS.Record;
导入org.xbill.DNS.SRVRecord;
导入org.xbill.DNS.TextParseException;
导入org.xbill.DNS.Type;
公共类DNSLookup{
公共静态void main(字符串[]args){
如果(参数长度<1){
System.err.println(“用法:java-jar-DNSLookup”);
系统出口(1);
}
字符串查询=“\u ssh.\u tcp.+args[0];
试一试{
/*****这里*********/
记录[]记录=新查找(查询,类型.SRV).run();
用于(记录:记录){
SRVRecord srv=(SRVRecord)记录;
字符串hostname=srv.getTarget().toString().replaceFirst(“\\.$”,”);
int-port=srv.getPort();
System.out.println(主机名+“:”+端口);
}
}catch(textparse异常){
e、 printStackTrace();
}
}
}

您的代码很好,除了
Lookup.run()
在未找到任何记录的情况下返回
null
不是空数组)

例如,如果将
\u ssh.\u tcp
替换为
\u nicname.\u tcp
,然后查找
uk
,您将找到.uk
whois
服务器的SRV记录

如果有问题,则与输入参数有关