この質問(http://www.hatena.ne.jp/1085397616)の続きです。実際に組んでみましたが、errorになります。ローカルではなく確認できませんでしょうか。実際に、立っているサーバーは、http://yp.shoutcast.com/に一覧されています。例えば、http://205.188.234.66:8010 などは、現在放送中ですが、確認できませんでしょうか。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:aki73ix No.1

回答回数5224ベストアンサー獲得回数27

ポイント100pt

ためしましたがOK返ります

ちなみに自サーバー上のWebクライアントから実行するとNATの関係でERRORになりますよ

#!/usr/local/bin/perl

$host=’205.188.234.66’;

$addr = (gethostbyname($host))[4];

$file = ’/’;

$name = pack(”S n a4 x8”, 2,8010, $addr);

socket(S, 2, 1, 0);

$afx=connect(S, $name);

close(S);

print qq(Content-type: text/html¥n¥n);

print ”<html><body>¥n”;

if($afx == 1){

print ”OK”;

}

else{

print ”error”;

}

print ”</body><html>¥n”;

exit;

id:dayofgreen

ありがとうございます。たしかに「参考URL」は稼動していますね。私のサーバーは、NATないではなくレンタルサーバーですが、上記のソースがやはり動きません。変更点は一点だけでPerlのロケーションが/usr/bin/perlになっているだけなのですが。環境で確認することはありますか?

2004/06/01 13:21:49
id:gaba No.2

回答回数90ベストアンサー獲得回数1

ポイント30pt

http://www.kent-web.com/www/index.html

自宅マシンWWWサーバ化計画

ご利用のレンタルサーバによっては、セキュリティの関係上、Socket 通信で外部サーバとのやり取りを禁止している場合もあります。

その場合はサーバ上で動作させる事は出来ません。

ローカルで CGI が実行出来る環境を用意して動作させるのがベストかと思います。

id:dayofgreen

なるほど、ありがとうございます。Socket通信が許可されているかどうかを調べる方法はありますでしょうか。

2004/06/01 17:35:16
id:aki73ix No.3

回答回数5224ベストアンサー獲得回数27

ポイント100pt

う〜ん・・・レンタルサーバからのアクセスを許可していないPortがあったりしますからね

Scriptが動かないのではなくて、「ERROR」の分岐に飛ぶのであれば、その可能性が高いです

ShoutCastサーバのPortとScriptのポートを変えてみると動作するかもしれません

安いレンタルサーバだとサーバからのネットワークコマンド(xterm/rsh/rlogin/telnet/sendmailなど)自体を許可していないところもありますからね・・・こうなるとPERLから直接確認するのは絶望的です

Perlでなくて良いのなら、C++Builderなどで20行程度のプログラムでサーバチェックするソフト作れなくもないですが(^^;

bool con=false;

void __fastcall TForm1::Button1Click(TObject *Sender)

{

ClientSocket1->Host=Edit1->Text;

ClientSocket1->Port=StrToIntDef(Edit2->Text,8000);

con=false;

ClientSocket1->Open();

}

void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,

TCustomWinSocket *Socket)

{

con=true;

Socket->Close();

ShowMessage(”放送中”);

}

void __fastcall TForm1::ClientSocket1Error(TObject *Sender,

TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)

{

con=false;

ShowMessage(”お休み”);

}

id:dayofgreen

細かに回答していただきありがとうございます。sendmailも使えるホスティングです。Cのbinaryも置くことができる比較的自由なサーバーですが、Socket通信が可能かどうか確認する方法はありますでしょうか。

2004/06/01 19:03:54

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません