[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