Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: kiriost en 29 Julio 2011, 20:54 pm



Título: [C++/HTTP] Lectura de buffer (string)
Publicado por: kiriost en 29 Julio 2011, 20:54 pm
Hola amigos.

Recurro a ustedes para que me ayuden. El problema es el siguiente:

He programado, en C (bajo Linux), una aplicacioón que se conecta, mediante Sockets, a un servidor Web y le envía una petición GET (protocolo HTTP) para que me pase el contenido de un archivo y yo lo guardo en un buffer.
Mi problema es que no se cómo sacar de ese buffer la respuesta del servidor http ("HTTP/1.1 OK\nAccept: [...]") para que quede solo el contenido del archivo.

La parte del código que envía la solicitud con GET y luego guarda la respuesta en un buffer es la sgte.:

Código
  1. //...
  2. char buffer[1452];
  3. char data[] = "GET /pag.html HTTP/1.1\n"
  4.                     "Host: www.paginaweb.com\n"
  5.                     "User-Agent: Mozilla/4.0\n\n";
  6.  
  7. send(sock, data, strlen(data), 0);
  8. recv(sock, buffer, 1452, 0);
  9.  
  10. printf("%s\n", buffer);

Como ya expliqué, envía una petición HTTP y el servidor le envía el contenido del archivo que requirió (pag.html) pero el problema es que en buffer junto con el contenido del archivo se guarda también la respuesta HTTP porque lo envía todo junto:

Por ejemplo: buffer:
Código:
HTTP/1.1 OK
Content-Length: 145233
Accept: arch...
Content-Type: ....

Aquí empiezar el contenido del archivo...bla bla bla
ASDadasdasdasd

Quisiera saber qué funciones podría utilizar para sacar de buffer la respuesta HTTP y que me quede solo el contenido del archivo.

Gracias de antemano!


Título: Re: [C++/HTTP] Lectura de buffer (string)
Publicado por: Arkangel_0x7C5 en 29 Julio 2011, 22:11 pm
las cabeceras http siempre terminan por un doble \n

Con lo que solo tendrías que buscarlo y empezar a leer a partir de hay
Mira las funciones de manejo de cadenas

Saludos