gpt4 book ai didi

用于 SRV 记录的 Java DNS 查找

转载 作者:搜寻专家 更新时间:2023-10-31 20:22:30 24 4
gpt4 key购买 nike

在下面的 java 代码中,我进行 DNS SRV 记录查找以解析给定域名(例如 root@1000000000.blubluzone.com)的目标域名和关联端口。下面用/HERE/指示的查找函数以某种方式返回 null,我无法获得查询结果(即记录数组为 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();
}
}
}

最佳答案

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

例如,如果您将 _ssh._tcp 替换为 _nicname._tcp,然后查找 uk,您将找到一条 SRV 记录.UK whois 服务器。

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

关于用于 SRV 记录的 Java DNS 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10138844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com