Quelle est la différence entre asio::tcp::socket async read some et async receive?

Quelle est la différence entre:

  • boost::asio::tcp::socket::async_read_some()
  • boost::asio::tcp::socket::async_receive()
<!-Pour autant que je sache, leur documentation est identique.

Qu'est-ce que je devrais préférer?

27
demandé sur deft_code 2010-02-10 18:51:26

3 réponses

je crois que les deux sont essentiellement identiques. La raison pour laquelle ils fournissent les deux est de fournir des interfaces similaires aux deux iostream (qui ont un read_some membre) et les sockets (qui ont un receive).

comme L'a souligné Peter Tseng,async_receive ne aussi une surcharge qui accepte socket_base::message_flagsasync_read_some n'est pas.

22
répondu Jerry Coffin 2016-12-14 00:56:04

Confirmation de tout le monde ici avec deux liens:

  1. https://github.com/boostorg/asio/blob/36eef63a9cf8ae609716d76ccb3906ff9769d53a/include/boost/asio/basic_stream_socket.hpp#L558
  2. https://github.com/boostorg/asio/blob/36eef63a9cf8ae609716d76ccb3906ff9769d53a/include/boost/asio/basic_stream_socket.hpp#L834

Le code est exactement le même. Cependant async_receive a une surcharge de message_flags, qui notamment vous permet de spécifier asio::socket_base::message_peek.

2
répondu Adrien Clerc 2016-12-14 00:45:42