Что является различием между:
boost::asio::tcp::socket::async_read_some()
boost::asio::tcp::socket::async_receive()
Насколько я могу сказать, что их документация идентична.
Который я должен предпочесть?
Их спецификация в предложении networking TR2 (5.7.10.2 basic_stream_socket members) тоже идентична:
On async_receive:
Effects: Вызывает this->service.async_receive(this->implementation, buffers, 0, handler).
On async_read_some:
Effects: Вызывает this->service.async_receive(this->implementation, buffers, 0, handler).
Так что я думаю, это подтверждает впечатление Джерри.
Я считаю, что они по сути идентичны. Причина, по которой они предоставляют оба, заключается в предоставлении интерфейсов, аналогичных как iostreams (которые имеют член read_some
), так и сокетам (которые имеют receive
).
Как указал Питер Ценг, async_receive
также имеет перегрузку, которая принимает socket_base :: message_flags
, а async_read_some
- нет.