SSISO Community

시소당

TCP/IP 소켓통신의 Readline 딜레이에 관하여 질문입니다.

BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "MS949" ));
msg = new String(br.readLine());
   

위와 같이 통상적인 방법으로 소켓통신을 하고 있습니다.

 

보통 BufferedReader에 readLine()을 하면 값이 날아올때까지 대기하게 되는데요

저는 이 시점에서 최대 기다리는 시간을 직접적으로 정해주고 싶습니다.

 

그러니까 Readline 상태에서 1초가 지나면 Readline을 중단하고 그대로 연산하는 것이지요.

그래야 응답이 없을때에 대한 카운트로 타임아웃을 지정할 수 있을 것 같은데

가능한 방법이나 조언 부탁드립니다. 감사합니다.





자답입니다.

 

try catch로 감싸고 ReadLine 바로 위에 socket.setSoTimeout(100); 를 넣어주면

 

0.1초동안 데이터가 들어오지 않을 시 catch로 넘겨줍니다.

 

이렇게 응용하여 구현하였습니다.

374 view

4.0 stars