インターQでsocketはつかえますか?

[上に] [前に] [次に]
もえもえ 2000/01/25(火) 22:17:52
ソケットを使ったcgiを作りたいのですが、
インターQはソケット使用可でしたっけ?
faq見ても書いていないので・・・
完全従量制だと安いので、できたらここにしたいのですが・・・
経験者の方はよろしくお願いします

kala 2000/01/25(火) 22:58:51
利用できません。

??? 2000/01/26(水) 04:06:01
使えます
無料のでなくてメンバーズなら

kala 2000/01/26(水) 10:35:25
そうですか。では前言は撤回しますが,少なくともここに出てくるような処理はできませんでした。
http://www.tohoho-web.com/wwwperl2.htm#socket

??? 2000/01/26(水) 13:18:12
>kala
http://www2d.biglobe.ne.jp/~gama/cgi/step10.htm
の処理は使えましたよ?
なんででしょ?
http://www.interq.or.jp/www1/9701630/cgi-bin/
お試しを

kala 2000/01/26(水) 19:31:28
本当だ。確かに http://www2d.biglobe.ne.jp/~gama/cgi/step10.htm
httpreq.cgiは動きました。

でもこんな単純なプログラムが動かないのはなぜ?

#!/usr/local/bin/perl
$addr = (gethostbyname("www.yahoo.co.jp"))[4];
$name = pack("S n a4 x8", 2, 80, $addr);
socket(S, 2, 1, 0);
connect(S, $name);
select(S); $| = 1; select(stdout);
print S "GET / HTTP/1.0\n\n";
while (<S>) { print; }
close(S);

http://www.tohoho-web.com/wwwperl2.htm#socket より。

Selly 2000/01/26(水) 19:55:29
NPHスクリプトなら動作するのでは?
以前、そういった話題があったと思います。
確か原因はレスポンスヘッダが2重にクライアントに返されるからだとか・・・

B-Cus 2000/01/26(水) 20:04:17
だからさ〜、CGI なんだから Content-type を出力すべきなのよ。
それに CGI が返すべきヘッダと、www.yahoo.co.jp が返すヘッダを
ごちゃまぜにすべきではないし。

kala 2000/01/27(木) 11:53:23
> CGI なんだから Content-type を出力すべきなのよ。
お恥ずかしい。初歩的ミスでした。

で,こんな感じに作り直してみましたが,まだ動きません。

[socket.cgi]
#!/usr/local/bin/perl

print<<"HTML_END";
Content-type: text/html

<HTML>
<HEAD>
<TITLE>www.yahoo.co.jp</TITLE>
</HEAD>
<BODY topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">
<FORM>
<TEXTAREA style="width:100%;height:100%">
HTML_END

$addr = (gethostbyname("www.yahoo.co.jp"))[4];
$name = pack("S n a4 x8", 2, 80, $addr);
socket(S, 2, 1, 0);
connect(S, $name);
select(S); $| = 1; select(stdout);
print S "GET / HTTP/1.0\n\n";
while (<S>) { print; }
close(S);

print "</TEXTAREA></FORM></BODY></HTML>";

[nph-socket.cgi]
「Content-type:」の前に「HTTP/1.0 200 OK」を挿入。

[nph-test.cgi]
NPHスクリプトが動作するかを確かめるために
#!/usr/local/bin/perl
print "HTTP/1.0 200 OK\nContent-type: text/html\n\nTEST";

結果は,NPHスクリプトは二つともInternal Server Errorがでました。socket.cgiは表示されるのですが,www.yahoo.co.jpの情報は取得されていませんでした。ちなみに,とあるレンタルサーバーではすべて動作しました。どうして動かないのか気になります。

それはさておき,http://www2d.biglobe.ne.jp/~gama/cgi/step10.htm
httpreq.cgiが動くことからして,トピック自体の結論はinterQでsocketは使えるという答えになります。自信満々で断言してしまったことお詫びします。

B-Cus 2000/01/27(木) 12:50:16
../199907/99070250.htm
ですかね?

kala 2000/01/27(木) 14:52:19
B-Cusさんのおっしゃる通りでした。一文字修正しただけで動きました。これからはhttpreq.cgiのようにSocket.pmを使うやり方も探ってみたいと思います。

これまでinterQはsocket不可とばかり思いこんでいてProHostingなどを使っていましたが,利用できることが分かって良かったです。

[上に] [前に] [次に]