[解決済み] リモート側のソケットクローズを検出する方法は?重複
2023-05-10 21:42:08
質問
をどのように検出するのですか?
Socket#close()
がリモート側のソケットで呼び出されたことをどのように検出しますか?
どのように解決するのですか?
この
isConnected
メソッドは役に立ちません。
true
を返してしまいます。これを試してみてください。
public class MyServer {
public static final int PORT = 12345;
public static void main(String[] args) throws IOException, InterruptedException {
ServerSocket ss = ServerSocketFactory.getDefault().createServerSocket(PORT);
Socket s = ss.accept();
Thread.sleep(5000);
ss.close();
s.close();
}
}
public class MyClient {
public static void main(String[] args) throws IOException, InterruptedException {
Socket s = SocketFactory.getDefault().createSocket("localhost", MyServer.PORT);
System.out.println(" connected: " + s.isConnected());
Thread.sleep(10000);
System.out.println(" connected: " + s.isConnected());
}
}
サーバを起動し、クライアントを起動します。2回目にソケットが閉じられているにもかかわらず、"connected: true"と2回表示されているのがわかると思います。
実際に確認する唯一の方法は、読み込み (戻り値として -1 が得られます) または書き込み (ソケットを閉じるための
IOException
(壊れたパイプ)が投げられる)関連するInput/OutputStreamsを読むことです。
関連
-
プロジェクトの依存関係を解決できない。
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Javaで文字列を分割する方法
-
[解決済み】WindowsでTCPまたはUDPポートをリッスンしているプロセスを見つけるにはどうすればよいですか?
-
[解決済み】close vs shutdown socket?
-
[解決済み】SO_REUSEADDRとSO_REUSEPORTはどう違うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipseは、ポップアップA Java Exception has occurred.を実行し、エラーException in threadの解決策を報告します。
-
実行中にEclipseがポップアップする A Java Exception has occurred
-
Collections.sortがdoubleでソートできない問題を完璧に解決する。
-
unsigned char* から const jbyte* {aka const signed char*} への変換が無効です。
-
keytool error: java.io.FileNotFoundException: cacerts (アクセス拒否されました。)
-
ジャバアレイ
-
FindBugの使用概要
-
API の戻り値を処理するために ResponseEntity を使用する
-
Java基礎編 - オブジェクト指向
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。