2015-08-02 3 views
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. Любые предложения/альтернативы?

+0

Вы решили это? – Neelesh

+1

@Neelesh Nope. Вместо этого я решил разрешить хосты с помощью CFHostStartInfoResolution вместо того, чтобы пытаться получить адрес DNS-сервера. – mrvincenzo

+0

@mrvincenzo см. Http://stackoverflow.com/a/41303040/6782 – Alnitak

ответ

Смежные вопросы