2

重複の可能性:
Java:リモート側のソケットが閉じていることをどのように検出しますか?

私はSocketとServerSocketでJavaを使用して小さなプログラムを書いています。サーバーといくつかのクライアントがあります。ユーザー(クライアント)がウィンドウを閉じると、クライアントとサーバー間の接続が閉じられます。

私の問題はサーバー上にあり、そのクローズイベントを検出できません。誰が私を助けられるか。

接続を閉じる前に、クライアントからサーバーにメッセージを送信して、このイベントを通知できます。ただし、tast manager(javaw.exe)からのユーザーエンドプロセスの場合、このソリューションは不可能です。

4

1 に答える 1

2

唯一かつ唯一の真の方法は、実際にリモート チャネルに何かを書き込もうとすることです。ソケットが閉じている場合は、適切な例外をスローします (読み取りにも同様に適用されますが、代わりに -1 を返す可能性があります)。

于 2011-05-18T10:33:02.080 に答える