This episode completes our introduction to the Asio C++ networking library by coding up an HTTP client app capable of retrieving content from the web. Rather than create a toy example using a trivial protocol, I wanted to demonstrate how easy it can be to write a practical app in just a short amount of time. Of course don’t interpret this as a license to continue the work and try to roll your own HTTP client library.
After publishing the last episode I realized that a discussion of Asio’s resolver class is incomplete without touching on reverse lookups. So this will be a quick episode to cover what we couldn’t get to last time.
This episode upgrades the resolver from last time by queuing up several
async_resolve queries at once. This helps us explore how the Asio implementation handles parallel requests for domain and service resolution. Here’s a hint: it’s not what you’d expect from reading the API.
This episode will provide a quick introduction to the Asio library and a small amount of asynchronous programming in general. Future episodes will continue this work by introducing additional libraries and talking to actual web services. For now we’ll start by building a small app that resolves hostnames into IP addresses. The gflags and glog libraries will provide some helpful infrastructure to get things started. Take a look at Episode 002 to refresh your memory of how they work.