2013-03-08 2 views
9

Lorsque async_read_some() renvoie une exception de EOF, cela signifie-t-il que le serveur a arrêté d'envoyer des données ou que la connexion est fermée? J'ai cette confusion comme je ne peux pas trouver une méthode pour savoir si le client a reçu toutes les données du serveur.EOF dans async_read() dans boost :: asio

Répondre

10

Indique que la connexion est fermée. Bien documenté elswhere il est encore applicable:

Un code d'erreur de boost::asio::error::eof indique que la connexion a été fermée par les pairs.

Si un client a besoin de savoir que toutes les données ont été reçues du serveur, pensez à prendre en charge le tramage dans le protocole de communication. Boost.Asio fournit des opérations de niveau supérieur pour vous faciliter la tâche. Par exemple async_read_until() peut être utilisé sur des protocoles où un certain ensemble de caractères est utilisé pour indiquer la fin d'un message, et async_read() peut être utilisé pour des protocoles de longueur fixe ou des protocoles de longueur variable avec un en-tête de longueur fixe.

Questions connexes