Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo usar el código c o c++ para obtener la IP del servidor DNS predeterminado

Cómo usar el código c o c++ para obtener la IP del servidor DNS predeterminado

El código aquí puede imprimir el servidor DNS predeterminado de la computadora

Material de referencia: ment(lib,?"IPHLPAPI.lib")?

#pragma? comment(lib,?"ws2_32.lib")?

int?main()?//?¿Obtener el nombre del host local, el nombre de dominio y la información del servidor DNS?

{

///?¿Declarar variables?

FIXED_INFO?*?FixedInfo;?//?¿Definir un puntero de estructura que almacene información de parámetros de la red informática local?

ULONGulOutBufLen; // ?Guardar la longitud de la lista vinculada de la estructura de información de parámetros de la red informática local obtenida?

DWORDdwRetVal;?//?¿El valor de retorno de llamar a la función GetNetworkParams()?

IP_ADDR_STRING ?*?pIPAddr ;//?¿Guardar la lista de direcciones IP de todos los servidores DNS?

FixedInfo?=?(FIXED_INFO?*)GlobalAlloc(GPTR,?sizeof(FIXED_INFO));//?Asignar memoria espacio para la estructura FixedInfo ?

ulOutBufLen?=?sizeof(FIXED_INFO);?//?¿Inicializar el valor de la variable ulOutBufLen?

?//?Llamar a la función GetNetworkParams() para la primera vez para obtener el tamaño del resultado devuelto en ulOutBufLen?

if?(ERROR_BUFFER_OVERFLOW?==?GetNetworkParams(FixedInfo,?&ulOutBufLen))

{

GlobalFree(FixedInfo);

FixedInfo?=?(FIXED_INFO?*)GlobalAlloc(GPTR,?ulOutBufLen);

}

// Llame a GetNetworkParams () por segunda vez, antes de que ulOutBufLen obtenido anteriormente se use como parámetro,?

if?(dwRetVal?=?GetNetworkParams(FixedInfo,?&ulOutBufLen)?!=?ERROR_SUCCESS)

{

printf("Error al llamar a la función GetNetworkParams(). Valor de retorno:?%08x\n",?dwRetVal);

}

else

{

printf("\nDNS Lista de servidores:\n");

printf("%s\n",?FixedInfo->DnsServerList.IpAddress.String);

pIPAddr?=?FixedInfo->DnsServerList .Siguiente;

while?(pIPAddr)

{

printf("\t%s\n",?pIPAddr->IpAddress.String);

pIPAddr?=?pIPAddr->Siguiente;

}

}

printf("Presione Enter para finalizar\n ") ;

getchar();

retorno?0;

}