Когда async_read_some () возвращает исключение EOF, означает ли это, что сервер прекратил отправку данных, или это означает, что соединение закрыто. У меня возникла путаница, так как я не могу найти метод, чтобы узнать, получил ли клиент все данные с сервера.
Это указывает на то, что соединение закрыто. Хотя задокументировано elswhere это все еще применимо:
Код ошибки
boost::asio::error::eof
указывает, что соединение было закрыто узлом.
Если клиенту необходимо знать, что все данные были получены с сервера, рассмотрите возможность поддержки кадрирования в протоколе связи. Boost.Asio предоставляет операции более высокого уровня, чтобы упростить эту задачу. Например async_read_until () может использоваться в протоколах, где определенный набор символов используется для указания конца сообщения, и async_read () может использоваться для протоколов фиксированной длины или протоколов переменной длины с заголовком фиксированной длины.
Других решений пока нет …