Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Gonzi_Malaga en 5 Noviembre 2015, 12:21 pm



Título: Ejercicio BSD Sockets
Publicado por: Gonzi_Malaga en 5 Noviembre 2015, 12:21 pm
Buenas! Estoy con una puñetera práctica de Erasmus que tenemos que hacer sin que nos expliquen nada... alguno sabría como cojones hacer esto? porque ni siquiera en google encuentro nada...

Create C/C++ program for UNIX operating system using BSD sockets which will download specified object (page,
picture, generally any file) from WWW server.
· Final program should be compiled into filename called download.
· Create makefile which can be used for automatic compilation of source file(s)
by typing make statement in UNIX shell.
· Downloaded file will have name as presented in URL or index.html for default
index page.


Graciaaaaas!


Título: Re: Ejercicio BSD Sockets
Publicado por: ivancea96 en 5 Noviembre 2015, 16:13 pm
Esto son y así se usan los sockets BSD: http://wiki.treck.com/Introduction_to_BSD_Sockets (http://wiki.treck.com/Introduction_to_BSD_Sockets)
Por lo demás, descargar un archivo o página de una web, y guardarla en un fichero.

Para descargar de la web, necesitarás conocer el protocolo HTTP. Busca acerca de él, o mira algún ejemplo, como https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_message (https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_message)

Te toca trabajarlo. La complejidad de este problema en mi opinión se centra en:
-1: Controlar los sockets: abrirlos, enviar datos, recibir datos
-2: Controlar el protocolo HTTP: Pedir al servidor, recibir datos del servidor
-3: Los datos recibidos del servidor, tendrán que ser separados entre cabecera y cuerpo. Lo que pondrás en el archivo, es el cuerpo, así que separarlos correctament ees esencial.

Como datos en los que fijarte del protocolo HTTP, decir que el campo "content-length" de la cabecera, te dice el tamaño del cuerpo en bytes, y que el cuerpo comienza a partir de 2 saltos de linea contiguos ("\r\n\r\n").

Si tienes más problemas, comenta.


Título: Re: Ejercicio BSD Sockets
Publicado por: Gonzi_Malaga en 5 Noviembre 2015, 16:44 pm
Pero el procedimiento a seguir cual sería?
abro el socket
envio que dato?
como lo recibo?

Ando muy perdido en C y con sockets mas aun y leo que send es para TCP y UDP me pierdo... (HTTP era con TCP?)


Título: Re: Ejercicio BSD Sockets
Publicado por: ivancea96 en 5 Noviembre 2015, 22:47 pm
Sí, HTTP es TCp. Envías la petición, y luego esperas la respuesta.
Busca por ahí información sobre el protocolo HTTP.
Si quieres un ejemplo más en vivo, puedes ver las peticiones que envía el navegador, y las respuestas. Para ello, en Firefox por ejemplo, le das a "Inspeccionar elemento" en el menú del botón secundario del ratón, y vas a "Red".

En resumen, primero trata de abrir un socket TCP. Luego, mira acerca del protocolo HTTP.