Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我编写了一个应用程序,它使用 TCP 连接通过套接字发送信息。出于多种原因,我正在使用阻塞调用,但我注意到boost::asio::write()当另一台机器(接收数据的机器)断开连接时,该方法不会阻塞。它也不会引发错误。
boost::asio::write()
这是预期的行为吗?
当缓冲区中没有空间时,套接字写入将阻塞,否则一旦缓冲区中有数据要发送,它将立即返回,直到数据传递给接收者。此外,网络堆栈可能无法检测到另一端立即断开连接,因此您可能会或可能不会在写入时看到错误代码。所以是的,这是预期的行为。