有什么区别:
boost::asio::tcp::socket::async_read_some()
boost::asio::tcp::socket::async_receive()
据我所知,他们的文件是相同的。
我更喜欢哪一个?
答案 0 :(得分:22)
我相信这两者基本相同。他们提供两者的原因是提供类似于iostream(具有read_some
成员)和套接字(具有receive
)的接口。
正如Peter Tseng所指出的那样,async_receive
也有一个接受socket_base::message_flags
的重载,async_read_some
没有。
答案 1 :(得分:18)
他们在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)。
所以我猜这证实了杰瑞的印象。
答案 2 :(得分:2)
通过两个链接确认每个人:
代码完全相同。但是async_receive
有一个带有message_flags的重载,特别允许您指定asio::socket_base::message_peek
。