Boost asio同步写入不会阻塞

时间:2013-11-13 15:37:47

标签: c++ boost boost-asio synchronous

我编写了一个使用TCP连接通过套接字发送信息的应用程序。由于多种原因,我正在使用阻塞调用,但我注意到boost::asio::write()方法在其他机器(接收数据的机器)断开连接时不会阻塞。它也不会引发错误。

这是预期的行为吗?

1 个答案:

答案 0 :(得分:3)

当缓冲区中没有空间时,套接字写将阻塞,否则只要数据在缓冲区中发送就会返回,而不是直到数据传递给接收方。此外,网络堆栈可能无法检测到另一侧立即断开连接,因此您可能会或可能不会在写入时看到错误代码。所以是的,这是预期的行为。