“ blocage ”. A savoir que si la fonction recv() n’a rien à recevoir, elle s’immobilise et attend de recevoir quelque chose (autrement dit, elle “ bloque ” le flux de traitement).
Changer en mode non blocage : D F_SETFL c 7 |
Comme le blocage est parfois indésirable, il est utile qu’il cesse (par timeout) après quelques secondes. C’est possible en changeant le mode en “ nonblocking ”, signifiant ainsi que si recv() n’a rien à recevoir, il renverra immédiatement un code retour de EWOULD BLOCK (indiquant qu’il bloquerait si l’on était en mode blocage). On peut ensuite coder sa propre boucle de temporisation (timeout) autour de la fonction recv().
Comme le montre l’encadré ci-dessus, pour passer en mode nonblocking, il faut appeler la fonction fcntl(). Ce qui a pour effet de changer le socket en nonblocking. Ce changement est indispensable avant d’exécuter la fonction recv() ou recvfrom().
Chris Woodhead, analyste/programmeur
Baycorp Holdings
Auckland, Nouvelle Zélande
Sécuriser sa téléphonie IP n’est plus une option. Avec la généralisation de la téléphonie cloud et des infrastructures VoIP, la voix circule désormais sur les mêmes réseaux que les données…
Passez à la cybersécurité proactive, transformez la collecte et l’analyse des logs en un bouclier dynamique contre les cybermenaces. Découvrez comment mettre en place une approche SIEM modulaire, évolutive et…