2011-05-01 5 views
2

TCP 연결을 통해 ObjectStream을 사용하여 클라이언트에서 서버로 데이터를 전송합니다. Sometimtes 서버는 새로운 데이터를 기다리는 동안 클라이언트가 종료됩니다. 이 경우 readObject()은 예외를 throw하지 않고 차단 된 상태로 있으며 계산이 중단됩니다.ObjectInputStream.readObject() 연결이 끊긴 경우 예외를 throw하지 않습니다.

ObjectStream의 연결이 끊어 지거나 더 많은 데이터 만 기다리는 지 어떻게 확인할 수 있습니까?

통신 간의 긴 지연 때문에 시간 초과를 사용하는 것이 어렵습니다.

답변

1

유일하게 안전한 방법은 시간 초과를 사용하는 것입니다. 연결 끊김을 감지하는 데 오랜 시간 지연이 있다고 생각하는 이유는 네트워크의 특성 때문입니다.

죽은 연결의 계산이 중지되면 실제로 문제가됩니까? 이렇게하면 짧은 시간 동안 리소스가 낭비 될 수 있지만 몇 분 안에 오류를 감지하고 리소스를 정리해야합니다.

+0

"areyouthere?"가 포함 된 시간 초과를 시도해보십시오. - 연결이 끊어 졌는지 여부를 테스트하는 메시지. – kasten

+0

하트 비트 객체를 보내고 있습니다. 매번 같은 것을 보내면 하트 비트를 보내는 효율적인 방법이됩니다. –

관련 문제