Red de conocimientos turísticos - Conocimientos sobre calendario chino - Usar sockets para resolver nombres de dominio

Usar sockets para resolver nombres de dominio

# incluir & ltstdio.h & gt

# 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)

{

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

{

/*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;

}

e="text/javascript" src="../css/tongji.js">