Bueno mi problema es bastante simple o complicado, ya ni si quiera lo sé.
La cosa es la siguiente: he creado una aplicación cliente que soporta Http y Smtp(por ahora), lo he probado muy poco con smtp, pero hasta ahora parece funcionar bien, mi gran némesis es el http!!!.
toda la aplicación está basada en objetos, hay un objeto HttpClient que maneja otro objeto Socket para conectarse, enviar y recibir datos, cuando hago una petición de datos (HTTP-Request) e intento procesar el HTTP-Response me doy cuenta de que los datos no han sido recibidos completamente es decir, la función recv() de el objeto socket no ha recibido todo, si se supone que TCP es un protocolo que te asegura que recibirás todos los datos, cómo es posible que no los reciba todos?.
He comprobado que si ejecuto un bucle por X tiempo recibo toda la info, o si espero X tiempo también recibo todo. pero... si pensamos que posiblemente el servidor ejecuta php y llega el momento de un script que tarda un poco o mejor dicho el tiempo es mayor que X, entonces no recibiré toda la info.
Es en este frustrante momento cuando me apoyo en HTTP, y comienzo a usar el Content-Length, pero me doy cuenta de que si el server ejecuta php o otro mecanismo de "dinamicidad" el Content-Length no está declarado pero el servidor va enviando un número hexadecimal y un bloque de contenido que corresponde en cantidad de caracteres con el hexadecimal. Pero procesar esto tan dinámicamente es bastante complicado.
y es por eso que pregunto: No hay una forma de saber si el servidor ya me envió todos los datos?, según el protocolo TCP?. Sabe alguién como evitan este problema los Browsers? como podría implementar esta solución? pararé algún día de hacer preguntas? bueno con respecto a esto último espero que no y con respecto al resto:
AGRADECERÍA TODA AYUDA POSIBLE, si me dan un enlace para un tuto que explica cómo arreglar esto, no se preocupen, no soy perezoso para este tipo de cosas.