Définition du délai d'attente pour la fonction recv

J'ai lu à partir de socket à l'aide de recv fonction. J'ai un problème lorsque aucune donnée n'est disponible pour la lecture. Mon programme s'arrête juste. J'ai trouvé que je peux vous définissez le délai à l'aide de select fonction. Mais il semble que le délai d'attente touche sélectionner la fonction elle-même et recv qui va au bout de sélectionner attend toujours uncontinuously.

fd_set set;
struct timeval timeout;
FD_ZERO(&set); /* clear the set */
FD_SET(s, &set); /* add our file descriptor to the set */
timeout.tv_sec = SOCKET_READ_TIMEOUT_SEC;
timeout.tv_usec = 0;
int rv = select(s, &set, NULL, NULL, &timeout);
if((recv_size = recv(s , rx_tmp , bufSize ,0)) == SOCKET_ERROR)
      {
      ...
      }

Comment demander recv fonction de retour après quelques timout?

source d'informationauteur vico