1
Я пытаюсь получить адрес DNS-сервера устройства при подключении к сети только на IPv6 в iOS. Следующий код хорошо работает при подключении к сети IPv4, но не работает в сети IPv6. Код, взятый из этого answer.iOS - Получить адрес DNS-сервера устройства только в сети IPv6
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");
}
}
В сети IPv6, sin_family
всегда AF_UNSPEC
. Любые предложения/альтернативы?
Вы решили это? – Neelesh
@Neelesh Nope. Вместо этого я решил разрешить хосты с помощью CFHostStartInfoResolution вместо того, чтобы пытаться получить адрес DNS-сервера. – mrvincenzo
@mrvincenzo см. Http://stackoverflow.com/a/41303040/6782 – Alnitak