小编xia*_* su的帖子

使用boost :: asio :: ip :: tcp :: socket :: cancel()和socket :: close()

如果我使用close而不取消,则存在一些问题.

close函数可以关闭套接字,并通过返回boost::asio::error::operation_aborted错误来停止任何未完成的异步操作.

我为什么要用cancel而不是close

我担心一些异步操作是否正在执行,cancel无法取消它,是吗?

就像asio::ip::tcp::resolve::cancel,我尝试多次取消resolve_handler后调用async_resolve,但resolve_handler总是返回没有boost::asio::error::operation_aborted错误.

我认为resolve_handler正在执行?

是?

c++ sockets boost boost-asio

3
推荐指数
2
解决办法
1万
查看次数

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

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

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

它们之间有什么区别吗?

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

c++ sockets boost boost-asio

1
推荐指数
1
解决办法
2180
查看次数

标签 统计

boost ×2

boost-asio ×2

c++ ×2

sockets ×2