WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:Perlで任意のURLのHTMLを読むには? について

りるふぃ [URL] [WriteDate : Mon Apr 23 23:38:45 2001]

perlはじめて2日目の"りるふぃ"と申します。
初心者ながら質問させて頂きます。

CGI-Perl関連 of WEB相談室にあった

「Perlで任意のURLのHTMLを読むには? ( qa109.htm )」
に載っていた、ちゃいぱさんの書いた

#!/usr/local/bin/perl
     $s_url= "www.xxx.co.jp";
     $addr = (gethostbyname($s_url))[4];  
     $name = pack("S n a4 x8", 2, 80, $addr);  
     socket(S, 2, 2, 0);  
     connect(S, $name);  
     print $name;
     binmode(S);  
     select(S);  
     $| = 1;  
     select(stdout);  
     print S "GET /~chaichan/index.html HTTP/1.0\n\n";
#     while(<S>) { print;}
     @HTML = <S>; ## 配列 @HTMLに読みこもうとしています  
     print @HTML;
     close(S);  

で、自宅のWINマシーンでは、正常に作動するのですが、
biglobeのサーバーにアップロードして実行しようとすると

「@HTML = <S>; ## 配列 @HTMLに読みこもうとしています」

上記の行で動かなくなり、タイムアウトでサーバーが見つかりませんエラーが出て
終わってしまいます。

これはbiglobeのサーバーが対応できなくてエラーが出るのでしょうか?
(TELNETは対応していないと書いてあるので、Socket系の命令はダメなのでしょうか?)

それとも初歩的なミスがなにかあるのでしょうか?
たとえば、Socket.pmなどを一緒にアップロードしなくてはいけないとか....
(今は、上記のcgiファイル1つだけで、他にはなにもアップロードしていません)

宜しく願い致します。

ちなみに下記のHPでbiglobeのHPの仕様が見れます。
http://kingdom.biglobe.ne.jp/help/shiyou5b.html


ちゃいぱ  [WriteDate : Tue Apr 24 08:57:11 2001]

>socket(S, 2, 2, 0);  
がダメなときの
socket(S, 2, 1, 0);
は、試しましたか?


りるふぃ [WriteDate : Tue Apr 24 15:54:13 2001]

ちゃいぱさん、はじめまして。
HP観覧させて頂いております。
とても、参考になっております。

>>socket(S, 2, 2, 0);  
>がダメなときの
>socket(S, 2, 1, 0);
>は、試しましたか?

2,2,0に直したところ、あっさり出来ました。お恥ずかしい...(^_^;)

自宅のWINマシーンでは、socket(S, 2, 1, 0)で動いたので
2,1,0でサーバーにアップしていました。

で、先程ちゃいぱさんの書いた原文どうりsocket(S, 2, 2, 0)
に戻したところ、あっさり出来てしまいました。

なかなかソケットに関する詳しい文献が見つからなかったのですが
68user's pageに、少し載っていました。

なにぶん初心者なもので、何がどう間違っているのか検討がつかず
質問させて頂きました。本当に助かりました。(^.^)

ありがとうございました。m(__)m


B-Cus [WriteDate : Tue Apr 24 19:36:16 2001]

>> socket(S, 2, 2, 0);  
> がダメなときの
> socket(S, 2, 1, 0);

そういう言い方はやめましょうよ。

SOCK_STREAM の値が OS ごとに異なることが原因で、直接
SOCK_STRRAM に相当する値を書かねばらならい perl4 では
portable なネット―ワークプログラムを書くことはできません。

それの解決策が perl5+Socket モジュールなのですから、
そちらを使うべきです。いまどき perl5 が使えない環境など
ほとんどないでしょうし。

「2 がダメなら 1 を使う」なんて、無理解な人を増やす
だけです。

そういう意味では、
 http://wakusei.cplaza.ne.jp/twn/wwwperl2.htm#socket
は不適切な解説を書き続けている極悪なページです。

# そのうち IPv6 が主流になると、「getaddrinfo の説明を
# していないのは、古い情報を流し続ける極悪ページ」と
# 認識されるでしょうね。


ちゃいぱ [WriteDate : Tue Apr 24 21:47:15 2001]

>「2 がダメなら 1 を使う」なんて、無理解な人を増やすだけです。
反省!反省!
B-Cus さん、ご指摘ありがとうございました。
perl5+Socketを勉強しないと...。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]
ChaichanPAPA's World