直接上代码吧:
#include <unistd.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> #include <arpa/nameser.h> #include <resolv.h> int main(int argc, char *argv[]) { struct __res_state res; res.options &= ~ RES_INIT; int err = res_ninit(&res); if (err) { fprintf(stderr, "res_init error: %d\n", err); return err; } char ip[16]; for(int i = 0 ; i < res.nscount; ++i) { ip[0] = '\0'; if (! inet_ntop(AF_INET, &res.nsaddr_list[i].sin_addr, ip, sizeof(ip))) { perror("inet_ntop"); continue; } printf("ip: %s\n", ip); } res_nclose(&res); return 0; }