DNS查询给出错误输出
问题描述:
这是我正在使用的代码。代码有什么问题? 此外,我怎样才能指定超时参数? tcp_timeout似乎不起作用。DNS查询给出错误输出
sub resolve_dns()
{
my $dns = $_[0];
my $res = Net::DNS::Resolver->new(
nameservers => [qw(24.116.197.232)],
recurse => 0,
debug => 1,
tcp_timeout => 3
);
my $query = $res->search($dns);
if ($query) {
foreach my $rr ($query->answer) {
next unless $rr->type eq "A";
print $rr->address, "\n";
}
} else {
warn "query failed: ", $res->errorstring, "\n";
}
}
这是我得到的输出。
Output
query failed: query timed out
;; search(www.youtube.com)
;; setting up an AF_INET() family type UDP socket
;; send_udp(24.116.197.232:53)
;; send_udp(24.116.197.232:53)
;; send_udp(24.116.197.232:53)
;; send_udp(24.116.197.232:53)
答
可以使用指定超时:
$res->udp_timeout(3);
,或者更换在构造函数中指定。
我会说这是......超时。 – 2012-04-11 14:11:27
@Brian,这是名称服务器的问题吗?如果我不指定名称服务器,它工作正常。 – cppcoder 2012-04-11 14:12:11
我会怀疑的。您可以通过在nslookup或dig上的命令行上进行验证。它当然适合我。 (确切地说 - 如果你使用默认的域名服务器,它可以工作...因此,不是代码问题) – 2012-04-11 14:14:04