boost :: asio :: ip :: tcp :: socket :: cancel和socket :: close之间有什么不同

时间:2011-06-21 14:25:37

标签: c++ sockets boost boost-asio

根据boost文档,当调用socket::close()时,异步发送,接收或连接操作将立即被取消,并将以boost::asio::error::operation_aborted错误完成。

socket::cancel导致所有未完成的异步连接,发送和接收操作立即完成,取消操作的处理程序将传递boost::asio::error::operation_aborted错误。

他们之间有什么区别吗?

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

1 个答案:

答案 0 :(得分:6)

  

他们之间有什么区别吗?

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

  

当我想完成一个插座时   连接,我应该拨打哪一个?

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