2010-01-06 6 views
0

Java 프로그램을 가지고 xot 프로토콜을 통해 서버에 연결합니다.Java에서 네트워크 시간 초과 처리

내 lib 내가 사용하는 연결 제한 시간을 처리 할 수 ​​있지만 & recv 데이터를 보낼 때 시간 제한을 처리하는 setSoTimeout() 같은 메서드가 없습니다.

누구나이 문제에 대한 해결책을 제안 할 수 있습니다.

감사

답변

0

하나의 옵션은 쓰기와 join(timeout) 그것을 할 수있는 스레드를 생성하는 것입니다. 마찬가지로 연결에서 읽는 것과 마찬가지입니다. 스레드가 죽는 것과는 반대로 시간 초과가 만료되면 분명히 스레드를 죽이고 (연결을 불확정 상태로 처리하십시오).

+0

좋습니다, 감사합니다. – QuanNH

+0

보내기/recv 시간 초과시 안전한 방법으로 스레드를 죽이는 방법은 무엇입니까? – QuanNH

+0

어쩌면 나는 새로운 질문을 만들 것이다 : D – QuanNH

0

recv에도 'Socket.setSoTimeout()'이 적용되어야합니다. javadoc을 참조하십시오.

공개 공극에 setSoTimeout (INT 시간 초과)는 비 - 제로 초과, 판독 (설정이 옵션) 차단이 소켓과 연관된 의 InputStream에 호출의 SocketException

Enable/disable SO_TIMEOUT with the specified timeout, in milliseconds. 

을 던진다 이 금액에 대해서만 시간. 제한 시간이 만료되면 java.net.SocketTimeoutException은 유효하지만 여전히 입니다. 이 옵션을 적용하려면 차단 작업을 입력하기 전에 을 활성화해야합니다. 제한 시간이 > 0이어야합니다. 제한 시간이 0이면 이 무한 제한 시간으로 해석됩니다.

+0

나의 프로토콜은 xot (TCP/IP를 통한 x25)이고이 프로토콜을위한 다른 lib를 사용하고, 자바 소켓은 사용하지 않는다 (그러나 비슷하다 : D) – QuanNH