[C con Clase] sockets
Adolfo Cárdenas
adocardenas en gmail.com
Mar Mar 30 00:10:07 CEST 2010
Gracias.
Voy a buscar estos archivos. Aunque use libwmsock32.a con winsock.h y
tambien desaparecio el error
. ¿También es recomendable programar con estos? La función que estoy
nhaciendo todavía no da el resultado que espero.
Esta es la función que estoy tratando de hacer
Lee una página web remota y muestra su contenido en MessageBoxes
void leerpagina()
{
WSADATA wsadata;
struct sockaddr_in address;
struct hostent*hp;
int sd;
char *hostname,*request,*cp;
FILE *local;
char buff[BUFSIZ];
int i,l,nrv;
WSAStartup(0x0101,&wsadata);
hostname = "www.mypagina.com";
request = "/";
hp = gethostbyname(hostname);
if (hp == NULL) { // do some error checking
MessageBox(NULL,"gethostbyname","",MB_OK); // herror(), NOT perror()
exit(1);
}
memcpy(&(address.sin_addr.s_addr),*(hp->h_addr_list),sizeof(struct
in_addr));
if(h_errno){
MessageBox(NULL,"DNS error","",MB_OK);
exit(1);
}
address.sin_family = AF_INET;
address.sin_port = htons(80);
sd = socket(AF_INET,SOCK_STREAM,0);
if(sd == 0) exit(1);
if(connect(sd,(struct sockaddr *)&(address),
sizeof(struct sockaddr_in)) == -1){
MessageBox(NULL,"Connection failed","",MB_OK);
exit(1);
} else {
MessageBox(NULL,"connect() ejecutado con exito!","",MB_OK);
}
///printf("\n\nGET %s HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n",
request,hostname);
sprintf(buff,"GET %s HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n",
request,hostname);
l = strlen(buff);
send(sd,buff,l,0);
do{
nrv = recv(sd,buff,BUFSIZ,0);
if(nrv > 0) MessageBox(NULL,buff,"",MB_OK); else break;
}while(1);
WSACleanup();
}
//¿Podría decirme dónde está el error?
/*Gracias.*/
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100330/f5e82444/attachment.html>
Más información sobre la lista de distribución Cconclase