Bonjour,
Je cherche à pouvoir lire un message d'une socket, dans sa totalité. J'utilise un select sur le file descriptor et une socket non bloquante. Le select m'indique que des données ont été écrite. Cependant, il arrive de temps en temps que je ne puisse récupérer la totalité des octets, car ceux ci ne sont pas tous disponibles. Du coup, le recv ne retourne pas le nombre attendu.
Donc, j'utilise un select, suivi d'un recv avec option PEEK, qui n'enlève pas les données de la socket. Dès que le recv option PEEK retourne le nombre d'octets attendu, j'utilise le recv sans l'option PEEK.
Y'a t-il un autre moyen de réaliser ce type d'opération ? Il y a je crois le recv avec l'option MSG_WAITALL mais du coup il se peut que je reste bloqué tout le temps.
Julien.
Partager