우리는 원격 서버에 대해 영구 소켓 연결을 유지하는 Java 클라이언트를 보유하고 있습니다. 클라이언트는 15 초마다 DB 테이블을 폴링하고 새 항목이 있으면 직렬화하여 소켓에 씁니다.Java 소켓 클래스가 연결 상태와 관련하여 거짓입니다.
출력 스트림에 쓰기 전에 소켓 연결 상태가 양호한 지 확인하고 싶습니다. 특정 애플리케이션 로직에 대해 이러한 사전 점검은 예외를 포착하고 반응 적으로 다시 연결하는 것보다 간단합니다.
LOG.debug("Socket status: bound=" + _socket.isBound() + ", closed=" + _socket.isClosed() + ", connected=" + _socket.isConnected() + ", outputShutdown=" + _socket.isOutputShutdown() + ", inputShutdown=" + _socket.isOutputShutdown());
나는 잠시 내 네트워크 어댑터를 비활성화하고 다음 폴링 동안, 예상대로 기록하는 동안 예외가 발생했습니다
나는 나를 연결이 끊어 때 알릴 수있는 방법 코드 그림을 다음 사용 소켓에.
그러나, 디버그 문은 다음과 같은 인쇄 :
"Socket status: bound=true, closed=false, connected=true, outputShutdown=false, inputShutdown=false"
내가 예상 true 또는 거짓에 연결되어 마감했다. 내가 얻는 실제 가치가 거짓말 인 것 같습니다.
소켓의 연결 상태를 안정적으로 확인할 수있는 방법이 있습니까?
합니다. – barrowc
그들은 거짓말이 아니며 단지 잘못 해석 한 것입니다. –