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页面):
总结…
disable asio’s I/O completion port
For portable cancellation,consIDer
using one of the following
alternatives:
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()所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)