boost async_write()和non_blocking socket.send()之间的区别

时间:2016-02-28 10:32:13

标签: c++ sockets boost boost-asio

'因为我们可以通过其成员函数non_blocking(true)将套接字设置为非阻塞状态。

async_write(socket, buffer)和非阻塞socket.send(buffer)之间是否存在差异?

多个socket.send(buffer)会导致无序数据传递,与async_write(socket, buffer)相同吗?

1 个答案:

答案 0 :(得分:1)

发送并不能保证所有数据都写入套接字。您应该检查“写入的字节数”返回值,错误代码等。另一方面, async_write 将尝试发送,直到发送所有数据或发生错误。

来自ip::tcp::send手册的评论:

  

发送操作可能不会将所有数据传输到对等方。   如果需要确保所有数据,请考虑使用write函数   在阻塞操作完成之前写入。