I/O操作:异步操作取消与套接字关闭
异步操作取消
在网络通信中,有时候异步操作启动后,由于各种原因,用户可能希望取消这些操作。比如在浏览器中,用户输入一个网站地址后,在页面加载过程中又改变主意输入了另一个地址;或者客户端向服务器发送请求后,服务器因bug陷入死锁,导致客户端永远无法收到响应。在这些情况下,能够取消已启动的异步操作就显得尤为重要。
Boost.Asio库提供了异步操作可随时取消的功能,以下是使用Boost.Asio启动和取消异步操作的步骤:
1. 定义标志(仅适用于Windows XP或Windows Server 2003) :如果应用程序要在这些系统上运行,需要定义标志以启用异步操作取消功能。默认情况下,Boost.Asio在Windows上使用I/O完成端口框架来异步运行操作,但在Windows XP和Windows Server 2003上,该框架在操作取消方面存在问题和限制。因此,需要在包含Boost.Asio头文件之前定义 BOOST_ASIO_ENABLE_CANCELIO 宏。为了避免I/O完成端口框架带来的问题,还可以定义 BOOST_ASIO_DISABLE_IOCP 宏。
2. 分配和打开套接字 :分配并打开一个TCP或UDP套接字,可以是客户端或服务器应用程序中的主动或被动(接受器)套接字。
3. 定义回调函数 :为异步操作定义一个回调函数或仿函数。如果需要,在回调中实现处理操作已取消情况的代码分支。
4. 启动异步操作
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



