-1

目的:ゲームサーバー(cloudnine1999.no-ip.org:port 43594)かどうかを確認するために5分ごとにチェックするブール値を含むJavaプログラムを作成したい

目的:クラッシュした場合にゲームサーバーを再起動する

問題:Javaを使用してサーバーがオンラインであるかどうかを確認する方法がわからない。

プログラム機能:ブール値がfalseを返した場合(サーバーがオフラインであることを意味します)、サーバーが起動するようにJavaプログラムで特定のバッチファイルを開きます(サーバーがクラッシュした場合)

私はグーグルで何かを見つけようとしましたが、役立つものは何も見つかりませんでした、そして私はこれを自分で理解するのに十分なコーダーではありません、私が必要とするのは私に指示する/コーディングの正しい方向に私を向ける誰かですJavaを使用したサーバーステータスチェッカーで、残りはそこから実行できます。

米国中央部とカナダの午後4時頃まで、回答に回答できない場合があります。

4

2 に答える 2

0

シェル スクリプト ソリューション:

サーバーはJava EEサーバーであると想定しています。サーバーは、Windows では「bat」、Linux/Unix では「shell」スクリプトによってキックされます。UNIX/LINUX の場合: 最も簡単な解決策は、サーバーを起動する SHELL スクリプトにロジックを記述して、サーバーの起動時に JVM の PID をファイルに記録することです。次に、コマンド "ps -aef | grep" を使用してログに記録された PID を監視する簡単なシェル スクリプトを記述します。PID がない場合は、サーバーを起動します。このスクリプトは、サーバーを元の場所で起動したのと同じユーザーとして実行する必要があります。2 番目の解決策は、 "ps auxww | grep java" です。サーバーを識別するサーバー変数に注意してください。コマンドを実行するとわかります。

Java ソリューション:

すべてのサーバーには、HTTP URL を使用して監視できる管理ポートがあります。ああ、アプリケーションの URL にアクセスすることもできます。Java プログラムを使用すると、接続をテストできます。HTTP 応答コードが 200 の場合 - あなたは正常で、200 以外の場合 - 500 / 400 の場合、サーバーは停止していると見なされる可能性があります。次に、サーバー起動スクリプトを開始する必要があります。

于 2013-02-14T16:49:07.920 に答える
0

サーバーが起動しているかどうかを確認するために使用Socketします (例外をスローせずに IP とポートに接続できるかどうか)。一部のサーバーは、これらの「空の」接続を好まないことに注意してください。

try{
    new Socket("cloudnine1999.no-ip.org", 43594).close();
}catch(IOException ex){
    // Server probably down, restart it...
}catch(Exception ex){
    // Some  other problem, likely DNS or security related.
}

を使用ProcessBuilderして再起動してください。

于 2013-02-14T16:51:57.613 に答える