2013-09-22 3 views
0

소켓을 읽는 시간 초과를 넣고 싶습니다. C++에서 이것을 찾았고 Java로 변환하려고합니다.n 초 동안 소켓에서 읽음

int readable_timeo(SOCKET fd, int sec){ 
fd_set rset; 
struct timeval tv; 


FD_ZERO(&rset); 
FD_SET(fd, &rset); 

tv.tv_sec = sec; 
tv.tv_usec = 500000; 

return (select(0, &rset, NULL, NULL, &tv));} 

의견이 있으십니까?

도움 주셔서 감사합니다.

+0

읽기 시간 초과는 블로킹 읽기 작업에서 사용됩니다. Java의 Selector는 데이터가있는 소켓에 대해 알려주고 주어진 시간 내에 데이터를 제공하지 못한 소켓에 대해서는 알려주지 않을 것이라고 생각합니다. 그것이 차단 읽기가 필요한 것입니다. –

답변

2

Java의 간단한 기능은 Socket.setSoTimeout()입니다. 귀하가 게시 한 코드 중 가장 간단한 것은 아니며 Selector.select()입니다.

+0

이 시나리오의 예를 들어 주시겠습니까? : 이미 연결된 소켓이 있는데 밀리 초 시간 동안 읽으려고하는 readSocketTimeout (Socket s, int millisec) 메서드 내에서 전달하려고합니다. – Oxenarf

+0

그냥 명명 된 메서드를 호출하고 읽습니다. – EJP