我们也可以看到API的核心――socket类。Boost.Asio提供了TCP、UDP和 ICMP的实现。但是你可以用你自己的协议来对它进行扩展;当然,这个工作不适合胆小的人。
异步编程是必要之恶。你会明白为什么有时候需要它,尤其在写服务端的时候。调用service.run()来实现异步循环就已经可以让你很开心,但是有时候你需要更进一步,尝试使用run_one()、poll()或者poll_one()。
当实现异步时,你可以用你自己方法来异步执行;使用service.post()或者service.dispatch()。
最后,为了使socket和缓冲区(read或者write)在整个异步操作的生命周期中一直活动,我们需要采取特殊的防护措施。你的连接类需要继承自enabled_shared_from_this,在内部保存它需要的缓冲区,而且每个异步调用都要传递一个智能指针给this操作。
下一章会让你进行实战操作;在实现回显客户端/服务端应用时会有大量的上手编程。