Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: тαптяα en 19 Octubre 2010, 21:51 pm



Título: Problema con winsock
Publicado por: тαптяα en 19 Octubre 2010, 21:51 pm
Bueno es raro esto que me pasa, llevo algo winsock y miren que pasa cuando ejecuto este code:


Código
  1. #include <winsock2.h>
  2. #include <stdio.h>
  3.  
  4. /*Winsock library linked  :)*/
  5. #pragma comment(lib,"ws2_32.lib")
  6.  
  7. int main()
  8. {
  9.   WSADATA wsa;
  10.   SOCKET sock;
  11.   struct sockaddr_in local;
  12.   struct hostent *direc;
  13.   int len=0;
  14.   char Buffer[1024];
  15.  
  16.   //Determinamos la versión, en este caso la 2.0
  17.   WSAStartup(MAKEWORD(2,0),&wsa);
  18.  
  19.   //Creamos el socket
  20.   sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  21.   direc=gethostbyname("www.google.es");
  22.   printf("%s",*direc);
  23. }
  24.  

Imprimo el puntero a la estructura hostent y sale esto:

Citar
www.l.google.com

Ahora probaré a cambiar la estructura direc por esta:

Código:
direc=gethostbyname("www.facebook.com");

Y sale todo como debería salir.

¿alguna causa?  ;D


Título: Re: Problema con winsock
Publicado por: 16BITBoy en 19 Octubre 2010, 22:39 pm
Si no me equivoco, prueba a hacerle el gethostbyname a esa dirección que te sale, y saldrá lo que tiene que salir, y sino vuelve a intentar con lo que te de :D

Es algo relacionado con DNS, nombres canónicos creo que se le llamaba.


Título: Re: Problema con winsock
Publicado por: тαптяα en 19 Octubre 2010, 22:52 pm
Bueno es lo que me suponía redirecciones y DNS cosas que van fuera de mi dominio jajajjaa


Título: Re: Problema con winsock
Publicado por: ☺BADMAN en 23 Octubre 2010, 04:08 am
aqui te dejo algo que te pueda funcionar:

 bool RastrearDominio(char*IP, char* Dominio, int Port)
{
 char IPD[20]=" ";
 in_addr *o;
 hostent* hp;
 hp = gethostbyname(Dominio);
 sprintf(IPD,"%s", inet_ntoa(*( (struct in_addr *)hp->h_addr)));
if( P2P->EsacnearIPX(IPD,Port))
 {
 
  strcpy(IP,IPD);
  return true;
 }
 else
  strcpy(IP,"NULL");
 
return false;
}

  gethostbyname debuelve un estrcuct tipo hosten no un LPCSTR y P2P->EscanearIPx(IPD,Port) es un code extraño que quien sabe que hace XD (http://www.denunciando.com/images/icons/pixelSHERLOCK_finished.gif)


Título: Re: Problema con winsock
Publicado por: 43H4FH44H45H4CH49H56H45H en 23 Octubre 2010, 07:56 am
Imprimo el puntero a la estructura hostent y sale esto:

Citar
www.l.google.com

Ahora probaré a cambiar la estructura direc por esta:

Código:
direc=gethostbyname("www.facebook.com");

Y sale todo como debería salir.

¿alguna causa?  ;D

Solo modifique un poco respecto a tu codigo para que muestre lo que quieres (segun entendí):

Código
  1. #include <winsock2.h>
  2. #include <stdio.h>
  3.  
  4. /*Winsock library linked  :)*/
  5. #pragma comment(lib,"ws2_32.lib")
  6.  
  7. int main()
  8. {
  9.   WSADATA wsa;
  10.   SOCKET sock;
  11.   struct sockaddr_in local;
  12.   struct hostent *direc;
  13.   int len=0;
  14.   char Buffer[1024];
  15.  
  16.   //Determinamos la versión, en este caso la 2.0
  17.   WSAStartup(MAKEWORD(2,0),&wsa);
  18.  
  19.   //Creamos el socket
  20.   sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  21.   direc=gethostbyname("www.google.es");
  22.   memset(&local,0,sizeof(local));
  23.   memcpy(&local.sin_addr,direc->h_addr,direc->h_length);
  24.   local.sin_family = direc->h_addrtype;
  25.   local.sin_port= htons(80);  
  26.   printf("%s",inet_ntoa(local.sin_addr));
  27.   getchar();
  28. }
  29.  

Pero hay varios errores, comienza viendo algunos ejemplos basicos del tema, luego hay que comprobar los valores retornados para diagnosticar fallas en cada paso que realiza el programa y otras cosas mas...


Título: Re: Problema con winsock
Publicado por: тαптяα en 24 Octubre 2010, 08:12 am
aqui te dejo algo que te pueda funcionar:

 bool RastrearDominio(char*IP, char* Dominio, int Port)
{
 char IPD[20]=" ";
 in_addr *o;
 hostent* hp;
 hp = gethostbyname(Dominio);
 sprintf(IPD,"%s", inet_ntoa(*( (struct in_addr *)hp->h_addr)));
if( P2P->EsacnearIPX(IPD,Port))
 {
 
  strcpy(IP,IPD);
  return true;
 }
 else
  strcpy(IP,"NULL");
 
return false;
}

  gethostbyname debuelve un estrcuct tipo hosten no un LPCSTR y P2P->EscanearIPx(IPD,Port) es un code extraño que quien sabe que hace XD (http://www.denunciando.com/images/icons/pixelSHERLOCK_finished.gif)
Debes saberlo tu,¿no?

Imprimo el puntero a la estructura hostent y sale esto:

Citar
www.l.google.com

Ahora probaré a cambiar la estructura direc por esta:

Código:
direc=gethostbyname("www.facebook.com");

Y sale todo como debería salir.

¿alguna causa?  ;D

Solo modifique un poco respecto a tu codigo para que muestre lo que quieres (segun entendí):

Código
  1. #include <winsock2.h>
  2. #include <stdio.h>
  3.  
  4. /*Winsock library linked  :)*/
  5. #pragma comment(lib,"ws2_32.lib")
  6.  
  7. int main()
  8. {
  9.   WSADATA wsa;
  10.   SOCKET sock;
  11.   struct sockaddr_in local;
  12.   struct hostent *direc;
  13.   int len=0;
  14.   char Buffer[1024];
  15.  
  16.   //Determinamos la versión, en este caso la 2.0
  17.   WSAStartup(MAKEWORD(2,0),&wsa);
  18.  
  19.   //Creamos el socket
  20.   sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  21.   direc=gethostbyname("www.google.es");
  22.   memset(&local,0,sizeof(local));
  23.   memcpy(&local.sin_addr,direc->h_addr,direc->h_length);
  24.   local.sin_family = direc->h_addrtype;
  25.   local.sin_port= htons(80);  
  26.   printf("%s",inet_ntoa(local.sin_addr));
  27.   getchar();
  28. }
  29.  

Pero hay varios errores, comienza viendo algunos ejemplos basicos del tema, luego hay que comprobar los valores retornados para diagnosticar fallas en cada paso que realiza el programa y otras cosas mas...

Gracias


Título: Re: Problema con winsock
Publicado por: Garfield07 en 24 Octubre 2010, 14:26 pm
Al que no lo entiende, www.l.google.com redirecciona a www.google.es porque www.l.google.com es en realidad www.google.es xD!!!