根据boost文档,当调用socket::close()
时,异步发送,接收或连接操作将立即被取消,并将以boost::asio::error::operation_aborted
错误完成。
socket::cancel
导致所有未完成的异步连接,发送和接收操作立即完成,取消操作的处理程序将传递boost::asio::error::operation_aborted
错误。
他们之间有什么区别吗?
当我想完成一个套接字连接时,我应该调用哪一个,以便调用它们的回调处理程序时出现boost::asio::error::operation_aborted
错误?
答案 0 :(得分:6)
他们之间有什么区别吗?
是。 close()
方法关闭套接字,而cancel()
方法取消未完成的异步操作。使用cancel()
不会关闭套接字。
当我想完成一个插座时 连接,我应该拨打哪一个?
您应该使用cancel()
来停止任何未完成的异步操作。套接字将被析构函数关闭。