人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: dayofgreen
●カテゴリ:ウェブ制作
✍キーワード:サーバー ローカル 現在
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● aki73ix
●100ポイント

http://nifberry.727.net/test/shoutcast.cgi

ためしましたが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;

◎質問者からの返答

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


2 ● gaba
●30ポイント

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

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

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

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

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

◎質問者からの返答

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


3 ● aki73ix
●100ポイント

http://nifberry.727.net/test/ShoutCast.lzh

う〜ん・・・レンタルサーバからのアクセスを許可していない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(”お休み”);

}

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ