Summary
Asio is a well-designed library that can be used to write fast, nimble network servers that utilize the most optimal mechanisms for asynchronous I/O available on a system. It is an evolving library and is the basis for a Technical Specification that proposes to add a networking library to a future revision of the C++ Standard.
In this chapter, we learned how to use the Boost Asio library as a task queue manager and leverage Asio's TCP and UDP interfaces to write programs that communicate over the network. Using Boost Asio, we were able to highlight some of the general concerns of network programming, the challenges to scaling for a large number of concurrent connections, and the advantages and complexity of asynchronous I/O. In particular, we saw how using stackful coroutines makes writing asynchronous servers a breeze, compared to the older model of chaining handlers. While we did not cover stackless coroutines, the ICMP protocol, and serial port communications among other things...