Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[ayuda] problema con recv en programación socket

Estas en el tema de [ayuda] problema con recv en programación socket en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 13/10/2009, 13:58
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
[ayuda] problema con recv en programación socket

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.
__________________
Mucha seguridad nunca es suficiente.... Por una red segura
El señor ilustre obscurece nuestras mentes
Usas Linux? http://www.dudalibre.com/gnulinuxcounter
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:44.