2009-08-04 3 views
8

В чем разница между вызовом boost::asio::ip::tcp::socket «s read_some/write_some функции членов и вызова свободные функции boost::asio::read/boost::asio::write?подталкивания :: Asio операции чтения/записи

Более конкретно:

Есть ли польза для использования одного над другим?

Почему оба включены в библиотеку?

ответ

13

read_some и write_some могут возвращаться, как только был передан хотя бы один байт. Таким образом, вам нужно зацикливать, если вы хотите убедиться, что вы получите все данные, но это может быть то, что вы хотите.

Свободные функции - это обертки вокруг read_some и write_some и имеют разные условия завершения в зависимости от перегрузки. Обычно они ожидают, что буфер будет полностью передан (или возникнет ошибка, или в некоторых перегрузках появится явное условие завершения)

+0

Но зачем включать оба? –

+0

Они делают разные вещи (разные условия завершения). Я немного отредактировал свой ответ, надеюсь, теперь это яснее. – bdonlan

Смежные вопросы