boost::asio tcp 套接字关闭是否阻塞?

Joh*_*ane 5 boost asynchronous tcp shutdown boost-asio

boost::asio TCP 套接字接受/读/写都提供异步版本,但不关闭。

在我的代码中,我只是调用了 socket.close(),并且大部分时间它都可以正常工作。它触发了正常的 TCP 关闭。

但有时,close() 只是在没有关闭 TCP 的情况下关闭套接字。因此,我必须改为调用 shutdown()。但我不想阻止我的代码。在 boost:asio 中,shutdown() 是否阻塞?关闭()怎么样?close() 是否阻塞?

Imr*_*ala 6

首先,Boost.Asio 中的shutdown()close()调用调用了底层的 BSD 套接字实现。所以 Asio 的 shutdown() 或 close() 调用没有什么“特别的”。

进一步阅读:

http://linux.die.net/man/3/shutdown http://linux.die.net/man/3/close

如果你是 Windows:http : //msdn.microsoft.com/en-us/library/windows/desktop/ms738547%28v=vs.85%29.aspx (阅读评论,显然记录在案的优雅关机技术不一直都在工作..)