Acerca del código de resolución de nombres de dominio DNS, es muy breve y no se puede entender. Los expertos pueden ayudar.
#include
#include
#include
#include
#include
#include
/ /Incluir archivos de encabezado correspondientes
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 usado más adelante
if(argc<2) p>
{
fprintf(stderr,"Uso:%s nombre de host|ip..\n\a",argv[0]);
salir( 1) ; //Excepción cuando el parámetro argc es menor que 2
}
argv++
for(;*argv!=NULL;argv++)
{
/* Aquí asumimos que es IP*/
if(inet_aton(*argv,&addr.sin_addr)!=0)
{
host=gethostbyaddr((char *)&addr.sin_addr,4,AF_INET); //Si se pasa addr, llama a la función gethostbyaddr para convertirlo en un nombre de dominio
printf ("Información de dirección de Ip %s\n",*argv
}
else
{
/*); Nombre de dominio */
host=gethostbyname(*argv); //Si se pasa el 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 de %s\n",*argv
continuar //Imprimir en caso de error
<); p>}printf("Nombre de host oficial %s\n",host->h_name);
printf("Alias de nombre:"); >for( alias=host->h_aliases;*alias!=NULL;alias++)
printf("%s ,",*alias //Imprime la información requerida en el nombre de dominio p>
printf("\nDirección IP:\n");
for(alias=host->h_addr_list;*alias!=NULL;alias++)
printf( "%s \n ,",inet_ntoa(*(estructura en
_addr *)(*alias)));
//Imprime la información requerida en el nombre de dominio
}
return 0;
}