2017-02-20 13 views
0

私は、Java TCPソケットを使用してクライアント/サーバアプリケーションを作成しています。javaソケットの接続を制御する

クライアントとサーバーがソケットで接続されています。 場合によっては、サーバーがこのソケット上のクライアント用の応答メッセージを書き込む必要があります。

しかし、その時点で、クライアントのソケットは、close()メソッドを使用するのではなく、クライアントのアプリケーションを閉じて閉じることができます。 サーバーがこの状況をどのように認識し、このソケットに返信メッセージを書くのを避けることができますか?

+3

私は、単にサーバーのコードでスローされるIOExceptionをキャッチします。 –

+0

正確です。エラーを処理します。未来を予測しようとしないでください。 – EJP

答えて

0

これは確実に行うことは不可能です。接続が開かれていることを確認した場合は、接続を閉じるまでに接続が切断されている可能性があります。信頼できるソリューションは、書き込みを試み、発生する可能性のあるエラーを処理することです。

エラー表示が表示された場合、リモートピアにどれだけのデータが届いたかはわかりません。 2回の書き込みを実行し、2回目の書き込みでエラーが表示された場合、最初の書き込み前にリモートピアがシャットダウンしても、2回目の書き込みでローカルピアが通知した可能性があります。