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); p>
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;
}