
Perl LWPでのIPv6接続がエラーでつながらず、原因がわかりません。
記載しているソースで、Localhostに接続すると、LWP::UserAgentはエラーとなりますが
HTTP::Tiny、wgetコマンドは、問題ありません。(IPv4の場合は、LWPも問題ありません)。
どなたか、よい解決へのお知恵をよろしくお願いします。
perl 5.16.1
CentOS 5.9
------ソース-----
#!/usr/bin/perl
use strict;
use Net::INET6Glue;
my $uri = 'http://[::1]';
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $res = $ua->get($uri);
print $res->content,"\n";
print "********************************\n";
use HTTP::Tiny;
my $http = HTTP::Tiny->new;
my $response = $http->get($uri);
print $response->{content}, "\n";
-----結果-----
Can't connect to ::1:80 (接続を拒否されました)
LWP::Protocol::http::Socket: connect: 接続を拒否されました at /usr/local/perl-5.16.2/lib/site_perl/5.16.2/LWP/Protocol/http.pm line 51.
********************************
<html><body><h1>It works!</h1></body></html>
---環境---
This is perl 5, version 16, subversion 2 (v5.16.2) built for x86_64-linux
cpan[1]> i /INET6/
Reading '/root/.cpan/Metadata'
Database was generated on Fri, 01 Mar 2013 03:17:03 GMT
Distribution SHLOMIF/IO-Socket-INET6-2.69.tar.gz
Distribution SULLR/Net-INET6Glue-0.5.tar.gz
Module = IO::Socket::INET6 (SHLOMIF/IO-Socket-INET6-2.69.tar.gz)
Module = Net::INET6Glue (SULLR/Net-INET6Glue-0.5.tar.gz)
Module = Net::INET6Glue::FTP (SULLR/Net-INET6Glue-0.5.tar.gz)
Module = Net::INET6Glue::INET_is_INET6 (SULLR/Net-INET6Glue-0.5.tar.gz)
Module < Net::Patricia::AF_INET6 (PHILIPP/Net-Patricia-1.19.tar.gz)
Module < Net::Whois::Object::Inet6Num (AASSAD/Net-Whois-RIPE-2.002.tar.gz)
8 items found
No.2ベストアンサー
- 回答日時:
モジュールの中の処理を追っていくとNet::HTTP::Methodsの中の
http_configureというルーチンが、おかしなことをしているようです。
http_configureの前
$VAR1 = {
'Proto' => 'tcp',
'PeerAddr' => '::1',
'SendTE' => 1,
'PeerPort' => 80,
'LocalAddr' => undef,
'KeepAlive' => ''
};
http_configureの後
$VAR1 = {
'Proto' => 'tcp',
'PeerAddr' => '::1',
'PeerPort' => 1,
'LocalAddr' => undef
};
となって、ポート番号が1にかわっています。IPv6のアドレス記法に使われるコロン(:)と
URLでポート番号を指定するときの記法(localhost:8080など)の
コロン(:)を区別していないようです。
Linuxを使っているのでしたら、/etc/hostsに
::1 ip6-localhost ip6-loopback
などが登録済みと思うので、http://ip6-localhostで試すといいかもしれません。
No.1
- 回答日時:
perl + IPv6 - LWPをPatchなしでIPv6対応にする
http://blog.livedoor.jp/dankogai/archives/511860 …
手元の環境でなぜかIPv6接続できないので、試していませんが。
この回答への補足
早速の回答ありがとうございます。
>perl + IPv6 - LWPをPatchなしでIPv6対応にする
これも試しましたがダメでした・・・
あと、「Net::INET6Glue::INET_is_INET6;」もダメだったのです・・・
これらを追加する前は、「Bad hostname」が出てたので、INET6に移行は出来ているはずと思っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INDIRECT 横に再度抽出したい
-
Strawberry Perl for Windows ...
-
perlのプログラミング 部分入れ...
-
Perlでファイルの末尾から指定...
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VHDLについてですが何がお...
-
Perl 強制終了の回避について
-
正規表現でURLを抽出するには。
-
LWPでHTMLが取得できないことが...
-
LWP::Simpleでのgetについて
-
Perlで定義済みの関数名を使っ...
-
例外処理のフローチャートの記...
-
「デバイスは PRN を初期化でき...
-
Excel VBAでリンク切れをチェッ...
-
Excel VBA 定義されたプロージ...
-
Application.OnKey:項目入力中...
-
Excel VBAで、ユーザーフォーム...
-
モジュールの最大数はいくつな...
-
グラフのX,Y座標を取得したい
-
VBA This Workbookモジュール...
-
ユーザー定義関数に#NAME?が返...
-
LCD ディスプレイを Raspberry ...
-
VBSがコンパイルエラーになりま...
-
Excel VBAで、ユーザーフォー...
-
VBAで旧字体を異字体に一括で変...
おすすめ情報