2016-11-01 2 views
0

私は、2人のクライアントがネットワークを介してゲームをしている途中で、そのうちの1つが終了するとセッションが終了する方法を探しています。ネットワーク上の2つのクライアント間のゲーム。それらのうちの1つが終了したときに両方のクライアントウィンドウを閉じるには?

私はソケットを閉じてIOExceptionをキャッチして終了する必要があることを理解していますが、これをどうすればできますか?私はこれをやってみた

try { 
    // Some data/messages received etc 
} catch (IOException e) { 
    // Exits after interruption 
} finally { 
    try { 
     socket.close(); 
     System.exit(NORM_PRIORITY); 
    } catch (IOException e) { 
     System.err.println("ERROR: Cannot close socket"); 
     System.exit(1); // Exit with error 
    } 
} 

しかし、これは、サーバーを含むすべてのセッションを閉じます。私は間違って何をしているのですか?私はクライアントとサーバーを別のjvmで実行しようとしましたので、System.exit(..)が原因ではないかもしれません。

何か助けてください!

+0

2つのクライアントが互いに接続されていますか?それらは中央サーバーに接続されていますか?そして、それがピアクローズか実際のエラーかを見るために例外をチェックする必要があります。 –

+0

これらは中央サーバー経由で接続されています。私はそのことについてピア・クロージングを検討します。 – Pants

+0

私が見つけた唯一の方法は、IOExceptionまたはout.errorCheckをキャッチすることですが、そのうちの1つが終了するとすぐに両方のウィンドウを閉じる必要があります。他の方法はありますか? – Pants

答えて

0

他の誰かが同じ質問をしている場合は、私はそれを理解しました。

私は、クライアントがゲームを終了すると、終了したことを示すメッセージを送信してソケットを閉じ、モデルはそのメッセージをすべてのクライアントにリダイレクトして、ソケットを閉じてGUIを破棄してください。

関連する問題