Usar sockets para resolver nombres de dominio
# incluir & ltsys/types ;
# incluir & ltsys/h & gt . ># incluir & ltnetinet/in . h & gt;
# incluir & ltarpa/inet ;
# incluir & ltnetdb.h & gt
<. p>//Contiene el archivo de encabezado correspondiente.int main(int argc, char **argv)
{
struct sockaddr _ in addr//Estructura para guardar la dirección IP
struct hostent * host//Estructura para guardar el nombre de dominio
char * *Alias; //Puntero para usar más tarde
if(argc & lt; 2) p>
{
fprintf(stderr, "Uso: %s nombre de host|ip..\n\a ", argv[0]);
Salir(1) ;/ /Salir cuando el parámetro argc sea menor que 2.
}
arg v++;
for(;*argv!= NULLargv++)
{
/ *Aquí asumimos que es IP*/
if(inet_aton(*argv, & ampaddr.sin_addr)!=0)
{
host = gethostbyaddr ( (char *)& addr.sin_addr, 4, AF_INET); // Si la dirección entrante es addr, llame a la función gethostbyaddr para convertirla en un nombre de dominio.
printf("Información de dirección de Ip % s\n", * argv
}
Otros
{); p>
/*Domain name*/
host = gethostbyname(* argv); //Si se pasa un nombre, llame a la función gethostbyname para convertirlo en un nombre de dominio.
printf("Información de dirección del host %s\n", * argv
}
if(host==NULL)
);{
/*No encontrado*/
fprintf(stderr, "No hay información de dirección para %s\n", * argv);
Continuar; //Imprimir en caso de error
}
printf("Nombre de host formal %s\n ", host->h_name);
printf( " Alias de nombre:");
for(alias=host->h_alias; *alias!= NULL alias++)
printf("% s, ", * alias); // Imprime la información requerida en el nombre de dominio.
printf("\nDirección IP:\n ");
for(alias=host->h_address_list; *alias!= NULL alias++)
printf("%s \n,", inet _ ntoa(*(struct in _ addr *)(* alias)));
//Imprime la información requerida en la información del nombre de dominio.
}
Devuelve 0;
}