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

c – 使用boost :: asio :: ip :: tcp :: socket :: cancel()和socket :: close(),第1张

概述如果我使用close而不取消,则存在一些问题. close函数可以关闭套接字,并通过返回boost :: asio :: error :: operation_aborted错误来停止任何未完成的异步 *** 作. 我为什么要使用取消而不是关闭? 我担心如果某些异步 *** 作正在执行,取消无法取消它,是吗? 像asio :: ip :: tcp :: resolve :: cancel,我在调用async_re 如果我使用close而不取消,则存在一些问题.

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

我为什么要使用取消而不是关闭?

我担心如果某些异步 *** 作正在执行,取消无法取消它,是吗?

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

我认为resolve_handler正在执行?

是?

解决方法 如果要在不关闭套接字的情况下停止挂起 *** 作,则取消非常有用.

请注意,Boost documentation建议使用close以获得更高的可移植性(来自doc页面):


For portable cancellation,consIDer
using one of the following
alternatives:

disable asio’s I/O completion port
backend by defining
BOOST_ASIO_disABLE_IOCP. Use the close() function to simultaneously cancel the outstanding operations and close the socket.
总结

以上是内存溢出为你收集整理的c – 使用boost :: asio :: ip :: tcp :: socket :: cancel()和socket :: close()全部内容,希望文章能够帮你解决c – 使用boost :: asio :: ip :: tcp :: socket :: cancel()和socket :: close()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1219296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存