There is a method sendUrgentData in the socket class, which will send one byte of data to the output stream. As long as the SO_OOBINLINE attribute of the other party's Socket is not turned on, this byte will be automatically discarded (in In Java, an exception is thrown), and the SO_OOBINLINE attribute is turned off by default.
java determines whether the remote end is disconnected:
try{ socket.sendUrgentData(0xFF); }catch(Exception ex){ reconnect(); }
Using ping to implement
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(); } } }
There is a serious bug in the ping method, that is, you can only determine whether the other party is connected. network, and cannot determine whether the client is turned on.
For more java knowledge, please pay attention to the java basic tutorial column.
The above is the detailed content of Java method to determine whether socket is disconnected. For more information, please follow other related articles on the PHP Chinese website!