看起来我能够获得DNS查询,但我在答案中看不到任何内容。
final DnsNameResolver resolver = new
DnsNameResolverBuilder(EVENT_LOOP_GROUP.next())
.channelType(NioDatagramChannel.class)
.queryTimeoutMillis(Duration.ofSeconds(dnsTimeoutSeconds).plusMillis(dnsTimeoutMilliseconds).toMillis())
.recursionDesired(true)
.build();
try {
final AddressedEnvelope<DnsResponse, InetSocketAddress> result =
resolver
.query(new DefaultDnsQuestion(host, DnsRecordType.TXT))
.get();
...
答案 0 :(得分:1)
我可以使用Netty检索DNS TXT数据吗?例如。使用DnsNameResolver?
是的,你可以。
你所做的并不错,但缺少某些部分。 AddressedEnvelope
是邮件,发件人和收件人地址的容器。您只需要从AddressedEnvelope
获取消息,然后在DnsMessage
中查找答案。
private static String resolveTxt(String dnsRecord) throws InterruptedException, ExecutionException {
DnsMessage message = resolver.query(new DefaultDnsQuestion(dnsRecord, DnsRecordType.TXT)).get().content();
if(message.count(DnsSection.ANSWER) > 0) {
DefaultDnsRawRecord record = message.recordAt(DnsSection.ANSWER, 0);
return DefaultDnsRecordDecoder.decodeName(record.content());
}
return null;
}