Boost :: Asio операции чтения / записи
-
22-07-2019 - |
Вопрос
В чем разница между вызовами функций-членов boost :: asio :: ip :: tcp :: socket
read_some
/ write_some
и вызывая boost :: asio :: read
/ boost :: asio :: write
свободные функции?
Более конкретно:
Есть ли преимущество в использовании одного над другим?
Почему оба включены в библиотеку?
Решение
read_some и write_some могут вернуться, как только будет передан хотя бы один байт. Таким образом, вам нужно выполнить цикл, если вы хотите убедиться, что вы получаете все данные - но это может быть тем, что вы хотите.
Свободные функции являются обертками для read_some и write_some и имеют различные условия завершения в зависимости от перегрузки. Обычно они ожидают полной передачи буфера (или возникновения ошибки, или при некоторых перегрузках возникает явное условие завершения)