下記コードを使い WEBサイトの更新日付を取得したいのですが
実行すると Socket Error:Invalid argument のエラーが表示されソケットの作成に失敗します。
Perlのバージョンは 5.8.0でウィルス対策ソフト停止後のコード実行等対策等を考えて行いましたが状況は改善されません。
よければ、どうしてソケットの作成に失敗するのか教えていただけないでしょうか?
失敗テストケース
$host:www.google.co.jp
# テストコード
# モジュールの使用宣言
use IO::Socket;
# URLを入力
$ur1 = <STDIN>;
# URLをホスト名とファイルパスに分割
chomp($ur1);
if ($ur1 =~ /http:\/\/([^\/]+)(\/.*)/) {
$host = $1;
$file = $2;
} else {
die "そのURLには対応していません。\n";
}
# ソケットオブジェクト作成
$client_socket = new IO::Socket::INET {
PeerAddr => $host,
PeerPort => 'http',
Proto => 'tcp',
TimeOut => '5' };
unless ($client_socket) {
print "Socket Error:$!\n";
}
# 入力をサーバーに送信
print "$host $file" . "\n";
print $client_socket "GET $file HTTP/1.0\n\n";
No.1
- 回答日時:
そのnewの書き方はどこで学んだものですか?
パッケージを作るときのコンストラクタとか書いてはいませんでしたか?
$client_socket = IO::Socket::INET->new (
PeerAddr => $host,
PeerPort => 'http',
Proto => 'tcp',
TimeOut => '5' );
unless ($client_socket) {
die "Socket Error:$!\n";
}
# 入力をサーバーに送信
print "$host $file" . "\n";
print $client_socket "GET $file HTTP/1.0\n\n";
# 入力をフラッシュする
$client_socket->flush();
# 受信データを垂れ流す
print while (<$client_socket>)
ついでにソケットの勉強ならともかく更新時刻取るだけならLWP使った方楽です
すいません。new の()小括弧を間違えていたのが原因でした。文法ミスを気をつけたいと思います。
またLWPも勉強してみます。
修正前
$client_socket = new IO::Socket::INET {
PeerAddr => $host,
PeerPort => 'http',
Proto => 'tcp',
TimeOut => '5' };
unless ($client_socket) {
print "Socket Error:$!\n";
}
修正後
$client_socket = new IO::Socket::INET (
PeerAddr => $host,
PeerPort => 'http',
Proto => 'tcp',
TimeOut => '5' );
unless ($client_socket) {
print "Socket Error:$!\n";
}
No.2ベストアンサー
- 回答日時:
補足
書き方ってのはnewの位置じゃなくて中括弧(波括弧)の事ね
すいません。new の()小括弧を間違えていたのが原因でした。文法ミスを気をつけたいと思います。
またLWPも勉強してみます。
修正前
$client_socket = new IO::Socket::INET {
PeerAddr => $host,
PeerPort => 'http',
Proto => 'tcp',
TimeOut => '5' };
unless ($client_socket) {
print "Socket Error:$!\n";
}
修正後
$client_socket = new IO::Socket::INET (
PeerAddr => $host,
PeerPort => 'http',
Proto => 'tcp',
TimeOut => '5' );
unless ($client_socket) {
print "Socket Error:$!\n";
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ドライブ・ストレージ B550M Pro4マザーにM.2_SSD取付に関して 2 2023/04/15 02:07
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- CPU・メモリ・マザーボード Socket AM4マザーに、レガシーなインタフェースが多数あるのはなぜ? 3 2023/02/17 10:47
- 英語 This paper focuses on the literature relevant to t 2 2022/12/02 09:41
- Visual Basic(VBA) エクセルVBA 3 2022/06/23 20:00
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
Strawberry Perl for Windows ...
-
openした後、closeしないでプロ...
-
Perlで同じフォルダにある任意...
-
Perl 重複カウント 上位3名
-
アルファベットに付いて質問し...
-
perlのプログラミング 部分入れ...
-
perlをバージョンアップしたら...
-
perlでリテラル値はメモリにど...
-
TeraPadエディターの操作方法に...
-
Perl(Windows)の文法について
-
INDIRECT 横に再度抽出したい
-
Perl CSVファイルの複数条件で...
-
Perl 掲示板 並び替えについて
-
Perl テキスト 列検索
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
openした後、closeしないでプロ...
-
perlをバージョンアップしたら...
-
INDIRECT 横に再度抽出したい
-
Perl の外部モジュールの利用方法
-
Perlで特定文字列から特定文字...
-
Perlのエラーについてご教授く...
-
bashスクリプト
-
Strawberry Perl for Windows ...
-
perlで2次元配列をサブルーチ...
-
TeraPadエディターの操作方法に...
-
アルファベットに付いて質問し...
-
perlのflock関数でロックをかけ...
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
Wallpaper Engineでおすすめの...
-
Perlで時間の計算
-
perlのrequireの動き方について...
-
perlでリテラル値はメモリにど...
-
画像が表示でnull; this.src
おすすめ情報