소켓 클래스에서 sendUrgentData 메소드를 사용할 수 있습니다. 이 메소드는 상대방의 SO_OOBINLINE 속성이 있는 한 1바이트의 데이터를 출력 스트림으로 보냅니다. 소켓이 켜지지 않으면 자동으로 이 바이트가 삭제되며 SO_OOBINLINE 속성은 기본적으로 꺼집니다.
따라서 다음 코드 조각은 원격 끝의 연결이 끊어졌는지 확인할 수 있습니다.
try{ socket.sendUrgentData(0xFF); }catch(Exception ex){ reconnect(); }
(무료 학습 비디오 튜토리얼 공유: java 비디오 튜토리얼#🎜🎜 #)
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(); } } }참고: 이 방법에는 심각한 단점이 있습니다. 즉, 상대방이 연결되어 있는지 여부만 확인할 수 있습니다. 네트워크에 연결되어 있으며 클라이언트가 활성화되어 있는지 확인할 수 없습니다. 실제로 소켓.getoutstream 및 소켓.getinputstream 스트림을 통해 클라이언트에 정보를 주고받을 때 소켓이 연결되지 않으면 예외가 발생합니다. 이것이 Java에서 네트워크 프로그래밍을 요구하는 이유입니다. try로 작성되었으므로 클라이언트 종료 처리를 catch로 작성하면 됩니다. 추천 관련 기사 및 튜토리얼:
위 내용은 Java는 소켓 서버의 연결이 끊어졌는지 확인합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!