解析Boost.Asio
Boost.Asio是用于网络和低层IO编程的跨平台C++库,为开发者提供了C++环境下稳定的异步模型. 涉及到两个重要的概念:io服务和io对象,理解掌握好这两个东西,便走上光明大道。
想用通俗易懂的方式理解io服务,看了那么多,还是下面的概念模型图最好:
io服务
从第一个boost.asio的教程开始,boost文档就一直在告诉我们:使用boost.asio第一步就是要创建一个io_service对象。那么io_service是个什么东西呢?
就是用来初始化io对象,提供和底层系统进行io的一个东西;
boost::asio::io_service io_serv;
甭管它底层是干嘛的,盘他!!所有网络异步编程中,先给他创建一个io_service,待会的socket就用io_serv初始化,io对象的异步操作比如socket.async_connect()、socket.async_read等操作,都在io服务启动后实现,所以io_serv.run()这个函数很重要,它是启动io服务的。
io对象
socket相信你应该不陌生,它就是一种io对象,除此之外还有定时器,域名解析器等对象。
如上面的模型图所示,应用程序必须有一个io_servic