I\'m wondering how I can tell if all the data has been received from a socket. It\'s a simple web proxy and right now I\'m handling the request part, so what\'s sent should term
I think the plan you have is almost right. You need to keep loading the read data into a buffer until you find the desired pattern '\r\n\r\n'
, then you know you have the entire request and can pass it off to your processing logic, remove the request from the buffer and repeat.
HTTP is not a trivial protocol, taking several RFCs. Just matching double linefeed/new line won't do. At the very minimum you will have to parse the request headers to figure out what encoding is there, and then, optionally, work through the request body.
Look into libcurl or any of the available open-source web-servers to appreciate the complexity.
It depends if you are on a Blocking or Non-Blocking socket.