0

Java ソケットを使用してサーバー/クライアント アプリケーションを開発しました。このコードが示すように、私のサーバーは常に実行されています。

while(SERVER_STATUT) //Server Statut is always true unless the client launches the stop script
    {
        try {

            Socket sockcli = sockserv.accept();


        } catch (IOException e) 
        {
            e.printStackTrace();
        }
    }

クライアントはサーバーと対話し、メッセージをサーバーに送信します。私の問題は、スクリプト シェルを使用してサーバーを起動および停止することです。クライアントがサーバーを停止したい場合、停止スクリプトを呼び出します。サーバーが停止すると、開始スクリプトを呼び出してサーバーを再び起動できます。

開始スクリプトと停止スクリプトは .sh ファイルに保存されます。

ありがとうございました

4

2 に答える 2

1

2 つのインターフェイスが必要です。
1 つのインターフェイスは、クライアントがサーバーに接続するための8080
ものです (例:8081
ポート)8081SERVER_STATUT

于 2013-03-18T13:25:00.370 に答える
0

私はあなたのために完全な作業コードを書くことはできませんが、いくつかのアイデアを伝えることができます.

  • 役立つ場合は、既存のものを確認することをお勧めします。jboss/tomcat/apache...スクリプトの開始/停止

  • 基本的な考え方は、初めてstart.sh実行されるときに、スクリプトが tmp ファイル (たとえば) を作成して processId を保存することです。このファイルが存在する場合は、サーバーがすでに起動していることを意味し、ユーザーが複数回起動するとエラーメッセージが表示される可能性がありますyourapp.pidstart.sh

  • また、そのpidファイルを使用して、サーバーのprocessIdを取得し、それを強制終了することができます(サーバーを停止するエレガントな方法ではありませshutdown.shshutdown.sh -fkillforce。より良い方法は、サーバーが特定のポートをリッスンしてシャットダウンを処理することです。たとえば、一時ファイルを保存したり、ロジックのニーズに応じて事前停止処理を実行したりします。

  • 実際には、1 つのスクリプトだけが必要です。たとえばmyConsle.sh、上記の内容をこの 1 つのファイルに実装し、「switch caselike」構造を使用して、次のことができるようにします。

myConsole.sh start|restart|stop|forcekill|statusサーバーを管理します。

それが役に立てば幸い

于 2013-03-18T13:31:41.633 に答える