根据boost文档,当调用socket::close()时,将立即取消异步发送,接收或连接操作,并完成boost::asio::error::operation_aborted错误。
socket::cancel使所有未完成的异步连接,发送和接收操作立即完成,并且取消操作的处理程序将传递boost::asio::error::operation_aborted错误。

它们之间有区别吗?

当我想完成一个套接字连接时,我应该调用哪个套接字连接,以便它们的回调处理程序将被boost::asio::error::operation_aborted错误调用?

最佳答案



是的。 close()方法关闭套接字,而cancel()方法取消未完成的异步操作。使用cancel()不会关闭套接字。



您应该使用cancel()停止任何未完成的异步操作。套接字将被其析构函数关闭。

关于c++ - boost::asio::ip::tcp::socket::cancel和socket::close之间有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6426910/

10-12 22:57