obtener IP a partir de nombre de dominio

22/03/2005 - 10:42 por mdjimenez | Informe spam
Hola de nuevo grupo,

necesito obtener la dirección IP de una máquina dado el nombre de
dominio. Por ejemplo, una función en C que reciba "posting.google.com"
y me devuelva 0xd8ef257a. Existe algo así de sencillo o hay que
currárselo un poco?

Saludos, y gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Rodrigo Corral [MVP]
22/03/2005 - 11:45 | Informe spam
gethostbyname() es la funcion que debes usar...

De la ayuda de VS

//-
// Declare and initialize variables
hostent* remoteHost;
char* host_name;
unsigned int addr;

//-
// User inputs name of host
printf("Input name of host: ");
host_name = (char*) malloc(sizeof(char*)*16);
fgets(host_name, 16, stdin);

// If the user input is an alpha name for the host, use gethostbyname()
// If not, get host by addr (assume IPv4)
if (isalpha(host_name[0])) { /* host address is a name */
host_name[strlen(host_name)-1] = '\0'; /* NULL TERMINATED */
remoteHost = gethostbyname(host_name);
}
else {
addr = inet_addr(host_name);
remoteHost = gethostbyaddr((char *)&addr, 4, AF_INET);
}

if (WSAGetLastError() != 0) {
if (WSAGetLastError() == 11001)
printf("Host not found...Exiting.");
}
else
printf("error#:%ld", WSAGetLastError());

// The remoteHost structure can now be used to
// access information about the host



Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#2 mdjimenez
22/03/2005 - 12:56 | Informe spam
Muchas gracias, Rodrigo.

Funciona. Para leer la IP tengo que "concatenar" los caracteres:

remoteHost->h_addr_list[0][3]
remoteHost->h_addr_list[0][2]
remoteHost->h_addr_list[0][1]
remoteHost->h_addr_list[0][0]

Es esta la forma más "elegante" de hacerlo?

Un saludo, Manuel


Rodrigo Corral [MVP] wrote:

gethostbyname() es la funcion que debes usar...

De la ayuda de VS

//-
// Declare and initialize variables
hostent* remoteHost;
char* host_name;
unsigned int addr;

//-
// User inputs name of host
printf("Input name of host: ");
host_name = (char*) malloc(sizeof(char*)*16);
fgets(host_name, 16, stdin);

// If the user input is an alpha name for the host, use gethostbyname()
// If not, get host by addr (assume IPv4)
if (isalpha(host_name[0])) { /* host address is a name */
host_name[strlen(host_name)-1] = ''; /* NULL TERMINATED */
remoteHost = gethostbyname(host_name);
}
else {
addr = inet_addr(host_name);
remoteHost = gethostbyaddr((char *)&addr, 4, AF_INET);
}

if (WSAGetLastError() != 0) {
if (WSAGetLastError() == 11001)
printf("Host not found...nExiting.n");
}
else
printf("error#:%ldn", WSAGetLastError());

// The remoteHost structure can now be used to
// access information about the host
Respuesta Responder a este mensaje
#3 Rodrigo Corral [MVP]
22/03/2005 - 21:48 | Informe spam
Tan valida es esa como cualquier otra... no veo por que consideras que no es
elegante.


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#4 mdjimenez
28/03/2005 - 13:36 | Informe spam
Pues porque se me ha ocurrido a mí ;)

En serio, esperaba que hubiera un conjunto de funciones para acceder a
esa estructura, por aquello de la abstracción.

"Rodrigo Corral [MVP]" wrote in message news:<#B7U$...
Tan valida es esa como cualquier otra... no veo por que consideras que no es
elegante.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida