Как сделать так, чтобы вызов recv не блокировал и заставил его ждать только 5 секунд - PullRequest
0 голосов
/ 13 июня 2018

Как сделать вызов recv неблокирующим и заставить его ждать всего 5 секунд!

// Receive until the peer closes the connection
do {

    iResult = recv(ConnectSocket, recvbuf, recvbuflen, 0);
    if ( iResult > 0 )
        printf("Bytes received: %d\n", iResult);
    else if ( iResult == 0 )
        printf("Connection closed\n");
    else
        printf("recv failed with error: %d\n", WSAGetLastError());

} while( iResult > 0 );

1 Ответ

0 голосов
/ 13 июня 2018
fd_set readfds;
struct timeval count;
FD_ZERO(&readfds);
FD_SET(sockfd, &readfds);
select(0, &readfds, 0, 0, &count);
if (FD_ISSET(sockfd, &readfds))
{   
     if ((bytes=recv(sockfd, buffer2, 200, 0)) == -1) {
          return 0;
     }
}
...