Ir al contenido



Foto

Obtener IP desde URL y al contrario.


  • Por favor identifícate para responder
No hay respuestas en este tema

#1 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.943 mensajes
  • LocationMadrid - España

Escrito 14 abril 2009 - 04:41

Como complemento a la realización de un Ping a una IP, propongo esta función que encuentra la IP a partir de una URL. De esta forma podemos realizar un ping conociendo una URL:



cpp
  1. #include <winsock2.h>
  2.  
  3.  
  4. //------------------------------------------------------------------------------
  5. //  Obtener la IP a partir del Host
  6. //  Entrada URL en formato Web (google.com)
  7. //  Devuelve IP en formato 64.233.167.99
  8. //------------------------------------------------------------------------------
  9. AnsiString HostToIP(AnsiString URL)
  10. {
  11.   WSADATA wsaData;
  12.   hostent* He;
  13.   in_addr InAddr;
  14.  
  15.   AnsiString Result = "";
  16.   if(WSAStartup(MAKEWORD(1, 1), &wsaData) == 0){
  17.     He = gethostbyname(URL.c_str());
  18.     if(He){
  19.       Move(*He->h_addr_list, &(InAddr.S_un.S_addr), He->h_length);
  20.       Result = AnsiString(inet_ntoa(InAddr));
  21.     }
  22.     WSACleanup();
  23.   }
  24.  
  25.   return Result;
  26. }



Y su complementaria, obtiene el Host a partir de una IP:



cpp
  1. #include <winsock2.h>
  2.  
  3. //------------------------------------------------------------------------------
  4. //  Obtener el Host a partir de la IP
  5. //  Entrada IP en formato 64.233.167.99
  6. //  Devuelve Host en formato google.com
  7. //------------------------------------------------------------------------------
  8. AnsiString IPToHost(AnsiString IP)
  9. {
  10.   WSADATA wsaData;
  11.   hostent* He;
  12.   unsigned long Addr;
  13.  
  14.   AnsiString Result = IP;
  15.   Addr = inet_addr(IP.c_str());
  16.   if(Addr == INADDR_NONE) return "ERROR";
  17.   if(WSAStartup(MAKEWORD(1, 1), &wsaData) == 0){
  18.     He = gethostbyaddr((char*)&Addr, sizeof(Addr), AF_INET);
  19.     if(He) Result = He->h_name;
  20.     WSACleanup();
  21.   }
  22.  
  23.   return Result;
  24. }



Haciendo ping:



cpp
  1. bool P = Ping(HostToIP("www.google.com").c_str(), 3);



Saludos.
  • 0