OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

モジュールを使わずhttpデータ取得

  • 困ってます
  • 質問No.207659
  • 閲覧数37
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 67% (63/93)

UNIX,LINUX,WinのPerlで動きなおかつ、モジュール(lwpなど)を使わずhttpデータ取得したいのですが何かいいサンプルなどないでしょうか?
お手数おかけしますが、よろしくお願いします!
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル10

ベストアンサー率 40% (85/208)

LWP を使用しないわけは何ですか?素直に使用して方がいいですよ。
面倒なコーディングをしなくていいので。とりあえず以下にサンプル
を付けますがエラー処理を省いています。
#! /usr/local/bin/perl
#webサーバ名の取得
($remotehost) = @ARGV;
if ($remotehost eq ''){
$remotehost = 'localhost';
}
#ソケットに与えるパラメータの用意
$AF_INET = 2;
$SOCK_STREAM = 1;
$sockaddr = 'S n a4 x8';
chop($localhost = "localhost");
($name, $aliases, $proto) = getprotobyname('tcp');
($name, $aliases, $port) = getservbyname('http', 'tcp');
($name, $aliases, $type, $len, $thisaddr) = gethostbyname($localhost);
($name, $aliases, $type, $len, $thataddr) = gethostbyname($remotehost);
$this = pack($sockaddr, $AF_INET, 0, $thisaddr);
$that = pack($sockaddr, $AF_INET, $port, $thataddr);
#ソケットの作成と接続
if (socket(S, $AF_INET, $SOCK_STREAM, $proto)){
print "socket ok\n";
} else {
die $!;
}
if (bind(S, $this)){
print "bind ok\n";
} else {
die $!;
}
if (connect(S, $that)){
print "onnect ok\n";
} else {
die $!;
}
#ソケットのフラッシュ
select(S); $| = 1; select(STDOUT); # flush S

print "GET /index.html\n\n";
print S "GET /index.html\n";
do {
$msg = <S>;
if(eof(S)){
exit;
}
print STDERR $msg;
} until $msg != "";
お礼コメント
select_nao

お礼率 67% (63/93)

環境に依存するようなモジュールはできるだけ利用したくなかった
為、こういったものを探してました。

ありがとうございました。
無事解決できました!
投稿日時 - 2002-01-30 09:13:43
-PR-
-PR-
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ