HTTP :: Request使用IPv6接口

时间:2016-06-15 19:12:46

标签: perl ipv6 lwp

我有一台支持IPv6的Linux机器,本地环回接口:::1

我创建了一个perl脚本,用于向本地虚拟主机发送HTTP请求:

#!/usr/bin/perl

use strict;
use warnings;

use Net::INET6Glue::INET_is_INET6;
use LWP;

my $user_agent = LWP::UserAgent->new;
my $url = 'http://lwt/docs/info.php';
my $request = HTTP::Request->new(GET => $url);
my $response = $user_agent->request($request);
if ($response->is_success) {
    print $response->decoded_content;
}
else {
    die($response->status_line);
}

info.php文件:

<?php
print $_SERVER['REMOTE_ADDR'];

lwt别名写在/ etc / hosts文件中,如下所示:

127.0.0.1       lwt

目前输出为:&#34; 127.0.0.1&#34;。因此,请求通过IPv4发送。

是否可以告诉Perl使用IPv6接口?

1 个答案:

答案 0 :(得分:1)

为了建立IPv6连接,LWP必须为您的主机名找到IPv6 地址。由于您通过/ etc / hosts(127.0.0.1)提供的地址是IPv4地址,因此不会发生这种情况。您需要一个类似::1 lwt的主机条目,以便主机名解析为IPv6环回地址。