Как gcc/cygwin получает DNS-сервер?

У меня есть код, который я пишу под cygwin (используя GCC), который успешно использует gethostbyname(); однако когда я пытаюсь использовать преобразователь напрямую для получения IP-адреса DNS-сервера, он терпит неудачу (все записи в nsaddr_list[] равны нулю, а nscount равен -1). Если gethostbyname() работает, то очевидно, что он может подключиться к DNS-серверу.
Этот код...

    if (res_init() == -1) {
        fprintf(stderr,"res_init() failed\n");
        exit(1);
    }

    if (_res.nscount <= 0) {
        fprintf(stderr,"nscount = %d\n",_res.nscount);
    }
    else {
        for(i=0;i<_res.nscount;i++) {
            fprintf(stderr, "dnssrvr: %d.%d.%d.%d\n",
                (_res.nsaddr_list[i].sin_addr.s_addr & 0xff) >> 0,
                (_res.nsaddr_list[i].sin_addr.s_addr & 0xff00) >> 8,
                (_res.nsaddr_list[i].sin_addr.s_addr & 0xff0000) >> 16,
                (_res.nsaddr_list[i].sin_addr.s_addr & 0xff000000) >> 24);
        }
    }

работает на unix/linux, но возвращает nscount=-1 на cygwin. Есть ли какой-нибудь трюк для получения DNS-сервера при использовании cygwin/gcc?

8
задан caf 27 May 2012 в 09:46
поделиться