Bonjour,
j'aimerais savoir ce que signifie " socket en mode non-bloking".
Merci d'avance pour votre aide.
Bonjour,
j'aimerais savoir ce que signifie " socket en mode non-bloking".
Merci d'avance pour votre aide.
Je crois que cela signifie que lors de l'appel à une fonction du genre "recv" ou "recvfrom" (pour récupérer des octets reçus), eh bien s'il n'y a rien à récupérer, la fonction se termine sans attendre.
En mode bloquant, la fonction attendra l'arrivée d'au moins un caractère pour "rendre la main", ce qui bloque évidemment l'exécution du programme si aucun octet n'est reçu !
En mode bloquant, je crois que la fonction ne rend la main que si toutes les données ont été lues ... Un seul caractère ne suffit donc pas pour rendre la main à mon avis.
J'ai lu les explications qui sont ici http://www.quantic-storm.com/qs/inde...03&language=FR
Si j'ai bien compris :
1) le mode bloquant est intéressant quand on est à peu près sur que les données arrivent dans le socket sans qu'il n 'y a ait une latence importante entre l'émission et la réception. Dans le cas contraire, la fonction appelante sur la socket risque de monopoliser le processeur ...
2) le mode non bloquant est intéressant quand il y a une latence importante entre l'émission des données par l'application distante et la réception au niveau de la socket..
J'ai une autre question :
Est ce que il y a des situations ou on n'a pas le choix ... ?
oui, dans un cas comme dans l'autre...
Mode bloquant :
on a besoin de la réponse pour continuer...
Mode non-bloquant :
les données reçues arrivent à n'importe quel moment.. Soit on tourne inutilement pendant des plombes, en regardant régulièrement si il y a quelque chose en mode bloquant, et du coup il faut un time-out assez court, mais de toutes façons pendant ce temps on bloque, soit on continue, et quand quelque chose arrive, et à ce moment-là seulement, on le traite...
Partager