Vous pouvez utiliser le setsockopt fonction pour définir un délai d'expiration sur les opérations de réception:
SO_RCVTIMEO
Définit la valeur de délai d'expiration qui spécifie
la durée maximale d'une entrée
la fonction attend jusqu'à la fin. Il
accepte une structure timeval avec l'
nombre de secondes et microsecondes
la spécification de la limite sur combien de temps
d'attente pour une opération d'entrée à
complète. Si une opération de réception a
bloqué pendant autant de temps sans
la réception de données supplémentaires, il est
de retour avec un partiel de nombre ou de errno
réglé sur [EAGAIN] ou [EWOULDBLOCK] si non
les données sont reçues. La valeur par défaut pour cette
l'option est égale à zéro, ce qui indique qu'un
opération de réception ne doit pas le temps.
Cette option prend une structure timeval.
Notez que toutes les implémentations
permettre cette option pour être ensemble.
struct timeval tv;
tv.tv_sec = 30; /* 30 Secs Timeout */
tv.tv_usec = 0; // Not init'ing this can cause strange errors
setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv,sizeof(struct timeval));