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, chap06.h
:
/*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 send_request()
, and...