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で質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- 大学・短大 産能短期大学のスクーリングについて 私は土日に休めない仕事なのでライブ型のオンラインスクーリングを受 1 2022/06/29 15:54
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- その他(コンピューター・テクノロジー) .NET Frameworkがコントロールパネル>プログラムと機能に表示されない。 3 2022/12/31 15:33
- Windows 10 インストールしたてのVirtualBoxの仮想マシンにDHCPで割り振られるIPアドレスにつきまして 1 2023/05/03 14:46
- その他(コンピューター・テクノロジー) (コマンドプロンプト)コマンドプロンプトのactiveについて 2 2022/07/16 17:21
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
- Android tar.ファイルのインストールについて知りたいです 2 2022/07/23 15:34
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- その他(セキュリティ) Software Distribution folder の rename 手順 1 2022/08/19 13:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlをバージョンアップしたら...
-
Perlでファイルの末尾から指定...
-
英数文字列のうちの数値を4桁に...
-
#!/usr/bin/perlで書きだしたCG...
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlでリテラル値はメモリにど...
-
perlについて
-
Perlで特定文字列から特定文字...
-
CGIでimgタグでalignを使うとエ...
-
Perlの例文でif($a==1&&$b==5&&...
-
テキストファイルで提出とは?
-
Perl の外部モジュールの利用方法
-
アルファベットに付いて質問し...
-
Perlのエラーについてご教授く...
-
AI sisterとは、偽物の人ですか?
-
perlプログラミング 空白行削除
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlのrequireの動き方について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VHDLについてですが何がお...
-
Perl/TkのWWW::MechanizeのGET...
-
LWP::Simpleでのgetについて
-
Perl/TkでURLを既定のブラウザ...
-
LWPでHTMLが取得できないことが...
-
XML::XPathを使う
-
URI.pmの使い方を教えてくださ...
-
Perlでgoogle newsのRSSを取得...
-
mechanizeのタイムアウト処理に...
-
例外処理のフローチャートの記...
-
Excel VBAでリンク切れをチェッ...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
"JScript"が見つかりません!
-
VBSがコンパイルエラーになりま...
-
VBでグローバル変数を宣言するには
-
エクセルVBAでシートモジュール...
-
「デバイスは PRN を初期化でき...
-
VBA This Workbookモジュール...
-
モジュールの最大数はいくつな...
おすすめ情報