2013-03-08 15 views
9

Quando async_read_some() restituisce un'eccezione di EOF significa che il server ha interrotto l'invio di dati o indica che la connessione è chiusa. Sto avendo questa confusione perché non trovo un metodo per sapere se il client ha ricevuto tutti i dati dal server.EOF in async_read() in boost :: asio

risposta

10

Indica che la connessione è stata chiusa. Sebbene documentato elswhere è ancora applicabile:

Un codice di errore di boost::asio::error::eof indica che la connessione è stata chiusa dal peer.

Se un client ha bisogno di sapere che tutti i dati sono stati ricevuti dal server, prendere in considerazione la possibilità di supportare il framing nel protocollo di comunicazione. Boost.Asio fornisce operazioni di livello superiore per semplificare la procedura. Ad esempio, async_read_until() può essere utilizzato su protocolli in cui viene utilizzato un determinato set di caratteri per indicare la fine di un messaggio e async_read() può essere utilizzato per protocolli di lunghezza fissa o di lunghezza variabile con un'intestazione di lunghezza fissa.

Problemi correlati