Lectura de paginas Web
Publicado por eltiolopez (3 intervenciones) el 10/01/2009 06:06:09
Hola a todos.
Estoy implementando un programa en C, y necesito que me baje el contenido de una web. Me explico: introduzco una IP de google, por ejemplo, y el puerto 80, y quiero que me descargue todo el contenido HTML dentro de un buffer. Esto es más o menos lo que hago:
int sd; // Socket descriptor
int tam; // Tamaño de la estructura sockaddr
int numbytes; // Numero de bytes recibidos
char buf_recepcion[255]; // Almacenamos lo que recibimos
struct sockaddr_in mi_estructura;
printf("Comenzando! ");
mi_estructura.sin_family = AF_INET;
mi_estructura.sin_port = htons(PUERTO);
inet_aton(DIRECCION, &(mi_estructura.sin_addr));
memset(&(mi_estructura.sin_zero),' ',8);
printf("Intentando conectar con %s:%d ",inet_ntoa(mi_estructura.sin_addr),ntohs(mi_estructura.sin_port));
tam = sizeof(struct sockaddr);
sd = socket(AF_INET, SOCK_STREAM, 0); // Socket de datagramas SOCK_DGRAM
if (sd == -1) {
printf("Error definiendo socket ");
return 1;
}
connect(sd, (struct sockaddr *)&mi_estructura, tam);
numbytes = recv(sd, buf_recepcion, sizeof(buf_recepcion), 0);
printf("%d bytes recibidos ",numbytes);
printf("Recibido el paquete %s",buf_recepcion);
printf("Fin del programa! ");
Con lo hecho, me parece que sí que llega a conectarse con la página, pero tras una pausa de unos segundos me contesta que ha recibido 0 bytes.
¿Alguna sugerencia?
Gracias.
Estoy implementando un programa en C, y necesito que me baje el contenido de una web. Me explico: introduzco una IP de google, por ejemplo, y el puerto 80, y quiero que me descargue todo el contenido HTML dentro de un buffer. Esto es más o menos lo que hago:
int sd; // Socket descriptor
int tam; // Tamaño de la estructura sockaddr
int numbytes; // Numero de bytes recibidos
char buf_recepcion[255]; // Almacenamos lo que recibimos
struct sockaddr_in mi_estructura;
printf("Comenzando! ");
mi_estructura.sin_family = AF_INET;
mi_estructura.sin_port = htons(PUERTO);
inet_aton(DIRECCION, &(mi_estructura.sin_addr));
memset(&(mi_estructura.sin_zero),' ',8);
printf("Intentando conectar con %s:%d ",inet_ntoa(mi_estructura.sin_addr),ntohs(mi_estructura.sin_port));
tam = sizeof(struct sockaddr);
sd = socket(AF_INET, SOCK_STREAM, 0); // Socket de datagramas SOCK_DGRAM
if (sd == -1) {
printf("Error definiendo socket ");
return 1;
}
connect(sd, (struct sockaddr *)&mi_estructura, tam);
numbytes = recv(sd, buf_recepcion, sizeof(buf_recepcion), 0);
printf("%d bytes recibidos ",numbytes);
printf("Recibido el paquete %s",buf_recepcion);
printf("Fin del programa! ");
Con lo hecho, me parece que sí que llega a conectarse con la página, pero tras una pausa de unos segundos me contesta que ha recibido 0 bytes.
¿Alguna sugerencia?
Gracias.
Valora esta pregunta


0