ios - original - dns para iphone 2018
iOS: obtenga la dirección del servidor DNS del dispositivo solo en la red IPv6 (1)
Estoy tratando de obtener la dirección del servidor DNS del dispositivo mientras estoy conectado a la red IPv6 en iOS. El siguiente código funciona bien cuando está conectado a la red IPv4 pero no funciona en la red IPv6. Código tomado de esta respuesta .
res_ninit(&_res);
res_state res = &_res;
for (int i=0; i < res->nscount; i++) {
sa_family_t family = res->nsaddr_list[i].sin_family;
if (family == AF_INET) {
NSLog(@"IPv4");
char str[INET_ADDRSTRLEN]; // String representation of address
inet_ntop(AF_INET, & (res->nsaddr_list[i].sin_addr.s_addr), str, INET_ADDRSTRLEN);
} else if (family == AF_INET6) {
NSLog(@"IPv6");
char address[INET6_ADDRSTRLEN]; // String representation of address
inet_ntop(AF_INET6, &(res->nsaddr_list [i].sin_addr.s_addr), address, INET6_ADDRSTRLEN);
} else {
NSLog(@"Unspecified");
}
}
En la red IPv6, sin_family
siempre es AF_UNSPEC
. ¿Alguna sugerencia / alternativa?
Intenta usar res._u._ext.nsaddrs para IPv6.
Consulte https://chromium.googlesource.com/chromium/src/+/master/net/dns/dns_config_service_posix.cc#437