[Ios] دائرة الرقابة الداخلية - الحصول على عنوان ملقم دنس للجهاز على IPv6 الشبكة فقط



Answers

Question

أحاول الحصول على عنوان خادم دنس للجهاز أثناء الاتصال بشبكة IPv6 فقط على نظام التشغيل يوس. تعمل التعليمات البرمجية التالية بشكل جيد عند الاتصال بشبكة IPv4 ولكنها لا تعمل على شبكة 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 . أي اقتراحات / بدائل؟