반응형
특정시간안에 RECV가 되면 RECV한 BYTE만큼 리턴을 하게 됨... 실제 해당 LEN만큼 리턴을 하게 하려면 수정 필요
int socket_recv_len_timeout(int s, char *buf,int len, int timeout)
{
fd_set fds;
int n;
struct timeval tv;
/*** set up the file descriptor set ***/
FD_ZERO(&fds);
FD_SET(s,&fds);
/*** set up the struct timeval for the timeout ***/
tv.tv_sec = timeout;
tv.tv_usec = 0;
/*** wait until timeout or data received ***/
n=select(s+1,&fds,NULL,NULL,&tv);
if(n==0) { /*** TIMEOUT ***/
return -2;
}
if(n==-1) { /*** ERROR ***/
return -1;
}
/*** data must be here, so do a normal recv ***/
return recv(s,buf,len,0);
}
반응형