gethostbyname(); を正常に使用する cygwin で (GCC を使用して) 書いているコードがあります。ただし、リゾルバーを直接使用して DNS サーバーの IP アドレスを取得しようとすると失敗します (nsaddr_list[] のすべてのエントリが null で、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 で動作しますが、cygwin では nscount=-1 を返します。cygwin/gcc を使用しているときに DNS サーバーを取得するためのトリックはありますか?