boost asio receive () против read () - PullRequest
4 голосов
/ 18 июля 2011

Существует два типа функций чтения из потока для boost::asio::ip::tcp::socket. Я предполагаю, что их семантика различна. Может ли кто-нибудь, пожалуйста, обрисовать их в общих чертах, документация, которую я просмотрел , не проясняет это.

1 Ответ

5 голосов
/ 18 июля 2011

Как сказано в документации:

Операция receive() может не получить все запрошенное количество байт. Рассмотрите возможность использования функции read(), если вам необходимо убедиться, что запрошенный объем данных считывается перед операцией блокировки завершается.

Если вы действительно имели в виду read_some(), тогда нет никакой разницы. receive() - функция, специфичная для сокетов, тогда как read_some() - универсальная функция, доступная для всех потоков asio. (очень похоже на std::string length() и size())

...