根据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/