async_read和async_receive有什么区别?
async_read和async_receive有什么区别?
async_receive
是一个接收数据到缓冲区的函数,但可能不会接收您要求的数量。它将等于或少于您要求的数量,永远不会更多。async_read
将始终接收您要求的数量,正如其所述:async_read
没有获得那么多字节并且连接正常关闭,它会怎么做(是否视为“错误”)?这可以通过快速测试确定。(然而,async_receive
将只返回它所接收到的数据。)第一个是自由函数,第二个是成员函数。
另一个区别是socket_base::message_flags flags
参数。例如,在{{link1:recv(2)
}}手册页面中查看可能的值。
使用async_receive
时,您需要检查收到了多少字节。如果要读取最多N个字节,请使用它,而不是使用async_read
读取恰好N个字节。抱歉,我以为这在boost文档中是显而易见的。
async_receive
时,您需要检查收到了多少字节。如果想读取最多N个字节而不是恰好N个字节(async_read
),请使用它。 - Nikolai Fetissov