![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
ので動作を見るためにとほほを見て
WidnowsMeで
x.pl:
use Socket;
$addr=(gethostbyname("www.ndl.go.jp"))[4];
$name=pack("S n a4 x8", 2, 80, $addr);
socket(S,PF_INET,SOCK_STREAM,0);
connect(S, $name);
binmode(S);
select(S);
$|=1;
select(stdout);
print S "GET index.html HTTP/1.0\r\n\r\n";
while(<S>){print;}
close(S);
を作り
perl x.pl
を実行すると
HTTP/1.1 400 Bad Request
Date: Fri, 04 Feb 2005 15:40:15 GMT
Server: Apache
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>
が帰ってきました
なお
http://www.ndl.go.jp/index.html
は国立国会図書館のページでブラウザのアドレス欄に入れると正常に見れます
どのように修正すればよいでしょうか?
No.1ベストアンサー
- 回答日時:
index.htmlの前に/をつけます。
print S "GET /index.html HTTP/1.0\r\n\r\n";
GETの次の部分は、参考URLのRFCでいうところのabs_path
(絶対パス)になりますので、「/」が必要になります。
上の修正でとりあえず通りますが、
最近は以下のような書き方をする方が多いのでは
ないかと思います。
#!/usr/bin/perl
use IO::Socket;
my ($sock) = IO::Socket::INET->new(
PeerHost => "www.ndl.go.jp",
PeerPort => 80,
Proto => 'tcp');
eval {
$sock->print("GET /index.html HTTP/1.0\r\n");
$sock->print("\r\n");
print <$sock>;
};
$sock->close();
if($@) {
die $@;
}
参考URL:http://www.w3.org/Protocols/rfc2616/rfc2616.html
ありがとうございます
動きました
use Socket;
$server = 'www.ndl.go.jp' ;
$port = getservbyname('http','tcp');
$struct = sockaddr_in($port,inet_aton($server));
socket(S,PF_INET,SOCK_STREAM,0) || die("Socket失敗 $!");
connect(S, $struct ) || die("接続失敗1 $!") ;
select(S); $| = 1; select(STDOUT);
$respons = <S> ;
unless($respons =~ /^220/)
{
close(S);die("接続失敗2 $!") ;
}
close(S); select(STDOUT);
print "正常に接続されました。\n";
が接続失敗1を出すのですがその原因も教えていただければ幸いです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php ログイン 1 2022/11/01 00:24
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
連続投票の制限
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
ラジオボタンを選択済みにする...
-
横スクロールを縦スクロールに...
-
iis+cgiでmultipart/form-data...
-
ショッピングカートのクッキー...
-
FORMのselectの選択肢を最初か...
-
チェックボックスで選択した内...
-
[HTML]プルダウンメニューの横...
-
チェックボックスの返す値
-
postデータのあるページの再表示
-
ローカルテストサーバーと本番...
-
CGIフォームから飛ばすメールで...
-
(Perl)ReadParseによるハッシ...
-
チェックボックスとセレクトボ...
-
select値をhiddenのvalueに渡し...
-
「value」に2つの値をセットす...
-
INPUT TYPE
-
WEBページを強制的に横画面で見...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サーバーのテキストファイルを...
-
LuaJITで日本語出力
-
表示を一覧表形式にしたいので...
-
IIS の@INC ERRORについて教えて
-
索引を目次の該当ページへ入れ...
-
HTMLからCGIへデータを引き継ぎ
-
CGIの中で異なるContent-typeの...
-
jcode.pl 使い方
-
ブラウザ表示されません大変困...
-
CGIで、ボタンを押した時に違う...
-
perlがうごきません
-
標準入力からデータが読込めない
-
ランダムに1行読込み フォーム...
-
sjisでの文字化け?
-
サーバー(UNIX)上のフォルダ...
-
検索結果テーブルの背景色を変...
-
他のWWWサーバーからHTMLを得る
-
ひらがなチェック
-
次のcgiファイルを開くには? ...
-
ソケットの使い方が分からない
おすすめ情報