2010-02-06 2 views
10

다음 코드는 ...LWP에서 IPv6 지원을 활성화하려면 어떻게합니까?

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 레코드 없음).

내 질문은 :

  • 어떻게 LWP에서 IPv6 지원을 활성화합니까?
  • "prefer-IPv4-over-IPv6"(AAAAA)/"prefer-IPv6-over-IPv4"(AAAAA)에 대한 LWP 설정을 구성하는 방법은 무엇입니까?
+1

OS를 언급 했습니까? 100 % 확실하지는 않지만 관련성이 있습니다. – ziya

+0

Linux가 실행 중입니다. – knorv

답변

11

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'); 
+0

감사합니다. Net :: INET6Glue이 트릭을 수행했습니다! – knorv

1

데비안 위지 (펄 5.14)

작업 좋은 :

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

작동하지 (1)

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

하지의 예를 인용 작업 (2) [반품 : 잘못된 호스트 이름]

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

(3) 작동하지 않는 : 당신이 필요하지 않은 경우,

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

김 [반품 연결을 거부] http 요청의 IPv6 주소입니다. 괜찮습니다. :