DNS查找提供了错误的输出

时间:2012-04-11 14:08:56

标签: perl dns

这是我正在使用的代码。代码有什么问题? 而且,如何指定超时参数? tcp_timeout似乎不起作用。

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)

1 个答案:

答案 0 :(得分:0)

您可以使用以下方式指定超时:

$res->udp_timeout(3);

或者,替换在构造函数中指定它。