部分引用:http://blog.csdn.net/q601510717/article/details/7732643
一、核心概念和功能
解析Boost.Asio
Boost.Asio 可用于如socket等IO对象的同步或异步操作.在使用Boost.Asio前了解Boost.Asio概念图, 及与应用程序的相互集成是很有帮助的.
第一个范例,看看处理socket连接的情况.首先从同步操作开始.
应用程序必须有一个io_service对象. io_service对象负责连接应用程序与操作系统的IO服务.
boost::asio::io_service io_service;
要执行IO操作应用程序需要一个像TCP Socket的IO对象:
boost::asio::ip::tcp::socket socket(io_service);
而后执行同步连接操作,发送如下事件:
1. 应用程序通过调用IO对象初始化连接操作:
socket.connect(server_endpoint);
2. IO对象向io_service 提出请求.
3. io_service 调用操作系统功能执行连接操作.
4. 操作系统向io_service 返回执行结果.
5. io_service将错误的操作结果翻译为boost::system::error_code类型. error_code可与特定值进行比较,或作为boolean值检测(false表示无错误).结果再传递给IO对象.
6. 如果操作失败,IO对象抛出boost::system::system_error类型的异常.开始操作的代码如下所示:
boost::system::error_code ec;
socket.connect(server_endpoint, ec);
而后