Cliente Web (Navegador) sencillo en C bajo Linux

julio 26 2009Se el primero en comentar

Guardado en : General

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
 char host_name[256] ;
 char file_name[256];
 int port = 80;
 
int main (int argc, char *argv[]) {
	char buf[8192];
	char message[256];
	int sd;
	struct sockaddr_in pin;
	struct hostent *nip_host;
	//int i = 0;
/*	for (i = 0 ; i <8192; i ++)
		buf[i]= ' ';
	for (i = 0 ; i <256; i ++)
		message[i]= ' ';*/
	printf("Host:");
	scanf("%s",host_name);
	if ((nip_host = gethostbyname(host_name)) == 0){
		printf("Error al resolver el host\n");
		exit(1);
	}
 
	bzero(&pin, sizeof(pin));
	pin.sin_family = AF_INET;
	pin.sin_addr.s_addr = htonl(INADDR_ANY);
	pin.sin_addr.s_addr = ((struct in_addr * )(nip_host->h_addr))->s_addr;
	pin.sin_port = htons(port);
 
	if ((sd=socket(AF_INET,SOCK_STREAM,0)) == -1){
		printf("Error al abrir el socket\n");
		exit(1);
	}
 
	if(connect(sd, (void *)&pin,sizeof(pin)) == -1) {
		printf("Error al conectar el socket\n");
		exit(1);
	}
	printf("Archivo: ");
	scanf("%s",file_name);
	sprintf(message, "GET /%s \n",file_name);
 
	printf("enviando el mensaje %s al servidor web...\n",message);
 
	if(send(sd,message,strlen(message),0) == -1){
		printf("Error al enviar");
		exit(1);
	}
 
	printf("...mensaje enviado .. esperando respuesta..\n");
 
	if(recv(sd,buf,8192,0) == -1){
		printf("Error al recibir la repuesta..\n");
		exit(1);
	}
 
	printf("\nRespuesta del servidor:\n\n%s\n",buf);
	close(sd);
	return EXIT_SUCCESS;
}

Quizá te interese :

Acerca del autor:

Deja un comentario


Licencia y uso

Las técnicas demostradas en los tutoriales pueden ser utilizadas sin ninguna limitación y tampoco es obligatorio dar una atribución.


Los textos, imágenes y tutoriales son propiedad de sus respectivos autores, nuestro contenido se encuentra bajo licencia Creative Commons Share-Alike.

Escribe algo para el sitio

El escribir un tutorial o un artículo, mandarnos un enlace para Ubicuos, no solamente es una forma de obtener publicidad, si no también de dar algo a la comunidad y nosotros te lo recompensamos con los premios del mes! Leer más de nuestras promociones

¿Sugerencias?

Este es TU sitio, si tienes sugerencias o ideas de cómo podemos mejorarlo para ti, ¡Por favor háznoslos saber!

Hacemos nuestro mayor esfuerzo en proporcionar un sitio útil y amigable y esperamos que disfrutes tu tiempo aquí.

Ayuda a Difundir

Te gusta Ubicuos?

Ve las formas en que nos puedes apoyar.

Apoyando a Ubicuos.com

Submit your linkClose

-->