【发布时间】:2011-01-15 08:10:54
【问题描述】:
有什么区别:
boost::asio::tcp::socket::async_read_some()boost::asio::tcp::socket::async_receive()
据我所知,他们的文档是相同的。
我应该更喜欢哪个?
【问题讨论】:
标签: c++ boost-asio
有什么区别:
boost::asio::tcp::socket::async_read_some()boost::asio::tcp::socket::async_receive()据我所知,他们的文档是相同的。
我应该更喜欢哪个?
【问题讨论】:
标签: c++ boost-asio
我相信这两者本质上是相同的。它们提供两者的原因是提供类似于 iostream(具有 read_some 成员)和套接字(具有 receive)的接口。
正如 Peter Tseng 所指出的,async_receive 也确实有一个接受 socket_base::message_flags 的重载,而 async_read_some 不接受。
【讨论】:
networking TR2 proposal(5.7.10.2 basic_stream_socket 成员)中的规范也相同:
在 async_receive 上:
效果:调用 this->service.async_receive(this->implementation, buffers, 0, handler)。
在 async_read_some 上:
效果:调用 this->service.async_receive(this->implementation, buffers, 0, handler)。
所以我想这证实了杰瑞的印象。
【讨论】:
why 这可能是这样。
在这里通过两个链接向大家确认:
代码完全相同。然而,async_receive 有一个带有 message_flags 的重载,特别是允许您指定 asio::socket_base::message_peek。
【讨论】: