ソケットクラスにはsendUrgentDataというメソッドがあり、1バイトのデータを出力ストリームに送信しますが、相手のSocketのSO_OOBINLINE属性がONになっていない限り、このバイトは自動的に破棄され (Java では例外がスローされます)、SO_OOBINLINE 属性はデフォルトでオフになります。
java は、リモート エンドが切断されているかどうかを判断します。
try{ socket.sendUrgentData(0xFF); }catch(Exception ex){ reconnect(); }
Using ping を実装する
package com.csdn.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class test { static BufferedReader bufferedReader; public static void main(String[] args) throws IOException { try { Process process = Runtime.getRuntime().exec("ping 192.168.1.104");//判断是否连接的IP; bufferedReader = new BufferedReader(new InputStreamReader(process .getInputStream())); String connectionStr = ""; while ((connectionStr = bufferedReader.readLine()) != null) { System.out.println(connectionStr); } } catch (IOException e) { e.printStackTrace(); } finally { bufferedReader.close(); } } }
ping メソッドには重大なバグがあります。つまり、判断できるのは、あなただけです。相手がネットワークに接続しているかどうかを確認できず、クライアントの電源が入っているかどうかを判断できません。
Java についてさらに詳しく知りたい場合は、Java 基本チュートリアル 列に注目してください。
以上がソケットが切断されているかどうかを判断する Java メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。