Ответ 1
Похоже, вам просто нужно использовать Net::INET6Glue::INET_is_INET6. Процитируем его пример:
use Net::INET6Glue::INET_is_INET6;
use LWP::Simple;
print get( 'http://[::1]:80' );
print get( 'http://ipv6.google.com' );
Следующий код...
my $user_agent = LWP::UserAgent->new;
my $request = HTTP::Request->new(GET => $url);
my $response = $user_agent->request($request);
if ($response->is_success) {
print "OK\n";
} else {
die($response->status_line);
}
.. потерпит неудачу с.
500 Can't connect to <hostname> (Bad hostname '<hostname>')
.. если имя хоста в $url - только адрес IPv6 (то есть: наличие записи AAAA
, но не запись A
).
Мои вопросы:
A
vs. AAAA
)/ "prefer-IPv6-over-IPv4" (AAAA
vs. A
)?Похоже, вам просто нужно использовать Net::INET6Glue::INET_is_INET6. Процитируем его пример:
use Net::INET6Glue::INET_is_INET6;
use LWP::Simple;
print get( 'http://[::1]:80' );
print get( 'http://ipv6.google.com' );
Я считаю, что вам придется изменить модуль на использование модуля IPV6 net. По умолчанию он не активирован: http://eintr.blogspot.com/2009/03/bad-state-of-ipv6-in-perl.html. Я не верю, что есть что-то такое же простое, как "prefer-ipv6"
Debian Wheezy (perl 5.14)
Работайте хорошо:
use LWP::Simple;
print get( 'http://ip6-localhost:80' );
Не работает (1)
use LWP::Simple;
print get( 'http://[::1]:80' );
Не работает (2) [Return: Плохое имя хоста]
use LWP::Simple;
$ua = new LWP::UserAgent();
my $req = new HTTP::Request("GET", "http://[::1]/");
my $res = $ua->request($req);
Не работает (3) [Return: Отклонено соединение]
use Net::INET6Glue::INET_is_INET6;
use LWP::Simple;
$ua = new LWP::UserAgent();
my $req = new HTTP::Request("GET", "http://[::1]/");
my $res = $ua->request($req);
Су, если вам не нужен адрес IPv6 в http-запросе, это нормально.: (