'programming/C_C++'에 해당되는 글 279건

  1. 2010.12.23 소켓 RECV TIMEOUT

반응형


특정시간안에 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);
}

반응형
Posted by 공간사랑
,