2010-02-06 16 views
10

IPv6 desteğini LWP'de nasıl etkinleştiririm?

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); 
} 

.. ile başarısız olur ..

500 Can't connect to <hostname> (Bad hostname '<hostname>') 

.. Eğer $ url'deki hostname bir IPv6 sadece adresi ise (yani: AAAA kaydının varlığı ama A kaydı yok.

Sorularım:

  • IPv6 desteğini LWP'de nasıl etkinleştiririm?
  • "tercih-IPv4-over-IPv6" (A vs. AAAA)/"tercih-IPv6-over-IPv4" (AAAA vs. A) için LWP ayarlarını nasıl yapılandırabilirim?
+1

İşletim sisteminizden bahsetmiş miydiniz? Bunu fark edemedim.% 100 emin değilim ama ilgili olabilir – ziya

+0

Linux'u çalıştırıyorum – knorv

cevap

11

Sadece Net::INET6Glue::INET_is_INET6'u kullanmanız gerektiği gibi görünüyor.

use Net::INET6Glue::INET_is_INET6; 
use LWP::Simple; 
print get('http://[::1]:80'); 
print get('http://ipv6.google.com'); 
+0

Teşekkürler! Net :: INET6Glue hile yaptı! – knorv

1

Debian Wheezy (perl 5,14)

Çalışma güzel:

use LWP::Simple; 
print get('http://ip6-localhost:80'); 

Çalışmıyor (1)

use LWP::Simple; 
print get('http://[::1]:80'); 

değil onun örnek vermek gerekirse çalışma (2) [Dönüş: bozuk ana bilgisayar adı]

use LWP::Simple; 
$ua = new LWP::UserAgent(); 
my $req = new HTTP::Request("GET", "http://[::1]/"); 
my $res = $ua->request($req); 

(3) çalışan Değil: gerekmiyorsa,

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); 

Soo [Dönüş Bağlantı reddetti] IPv6 adresi http isteği, iyi. :(