Finding DNS server settings programmatically on Mac OS X

前端 未结 5 1646
醉话见心
醉话见心 2020-12-10 18:55

I have some cross platform DNS client code that I use for doing end to end SMTP and on windows I can find the current DNS server ip addresses by looking in the registry. On

5条回答
  •  天涯浪人
    2020-12-10 19:06

    I know it's been a long time since you needed this, but there is nothing worse than a old unsolved answer. You can't access them from "/etc/resolv.conf" because of permission issues. After much searching, and a little luck I discovered you can get it via res_ninit() function.

    // Get native iOS System Resolvers
    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;
      int port = ntohs(res->nsaddr_list[i].sin_port);
      if (family == AF_INET) { // IPV4 address
        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) { // IPV6 address
        char str[INET6_ADDRSTRLEN]; // String representation of address
        inet_ntop(AF_INET6, &(res->nsaddr_list [i].sin_addr.s_addr), str, INET6_ADDRSTRLEN);
      }
    }
    res_ndestroy(res);
    

提交回复
热议问题