SRV记录的Java DNS查找
在下面的java代码中,我正在进行DNS SRV记录查找,以解析给定域名的目标域名和相关端口,例如root@1000000000.blubluzone.com. 以/HERE/below指示的查找函数以某种方式返回null,并且我无法获得查询结果(即记录数组为null)。因此,在for循环中访问记录数组时会引发空指针异常 您认为我缺少什么使以下代码正常工作。我使用的是dnsjava,相关的API jar文件位于(页面底部)。提前谢谢你的建议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
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
,您将找到.ukwhois
服务器的SRV记录
如果有问题,则与输入参数有关