EOF в async_read () в boost :: asio

Когда async_read_some () возвращает исключение EOF, означает ли это, что сервер прекратил отправку данных, или это означает, что соединение закрыто. У меня возникла путаница, так как я не могу найти метод, чтобы узнать, получил ли клиент все данные с сервера.

11

Решение

Это указывает на то, что соединение закрыто. Хотя задокументировано elswhere это все еще применимо:

Код ошибки boost::asio::error::eof указывает, что соединение было закрыто узлом.

Если клиенту необходимо знать, что все данные были получены с сервера, рассмотрите возможность поддержки кадрирования в протоколе связи. Boost.Asio предоставляет операции более высокого уровня, чтобы упростить эту задачу. Например async_read_until () может использоваться в протоколах, где определенный набор символов используется для указания конца сообщения, и async_read () может использоваться для протоколов фиксированной длины или протоколов переменной длины с заголовком фиксированной длины.

9

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]