Well you need to look closely at what's in packet 139, because the response in packet 141 is "bad request".
Also, you only need worry about protocol=HTML messages. The TCP chatter probably isn't all that useful.
> send(http_client_socket, http_request.c_str(), http_request.length(), 0);
Like recv(), there is no guarantee that the whole message is sent in a single call.
At least start with
Code:
int s = send(http_client_socket, http_request.c_str(), http_request.length(), 0);
if ( s != http_request.length() ) { std::cerr << "Oops on send\n"; }
Are you able to fetch testcat_al.html using your browser?
If you are, comparing the browser's version of "GET" with your version will tell you a lot.