We will now implement an HTTP web client. This client takes as input a URL. It then attempts to connect to the host and retrieve the resource given by the URL. The program displays the HTTP headers that are sent and received, and it attempts to parse out the requested resource content from the HTTP response.
Our program begins by including the chapter header,
/*web_get.c*/ #include "chap06.h"
We then define a constant,
TIMEOUT. Later in our program, if an HTTP response is taking more than
TIMEOUT seconds to complete, then our program abandons the request. You can define
TIMEOUT as you like, but we give it a value of five seconds here:
/*web_get.c continued*/ #define TIMEOUT 5.0
Now, please include the entire
parse_url() function as given in the previous section. Our client needs
parse_url() to find the hostname, port number, and document path from a given URL.
Another helper function is used to format and send the HTTP request. We call it