मेरे पास कुछ कोड है जो मैं साइगविन (जीसीसी का उपयोग करके) के तहत लिख रहा हूं जो सफलतापूर्वक gethostbyname() का उपयोग करता है; हालांकि जब मैं DNS सर्वर के आईपी पते को पुनर्प्राप्त करने के लिए सीधे रिज़ॉल्वर का उपयोग करने का प्रयास करता हूं तो यह विफल हो जाता है (nsaddr_list [] में सभी प्रविष्टियां शून्य हैं और nscount -1 है)। अगर gethostbyname() काम कर रहा है, तो जाहिर है कि यह DNS सर्वर से कनेक्ट करने में सक्षम है।
इस कोड को ... यूनिक्स/लिनक्स परजीसीसी/साइगविन को 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);
}
}
काम करता है, लेकिन रिटर्न nscount = -1 cygwin पर। क्या साइगविन/जीसीसी का उपयोग करते समय DNS सर्वर प्राप्त करने के लिए कुछ चाल है?
एक तरफ के रूप में, आप '{char buf [INET_ADDRSTRLEN] का उपयोग कर सकते हैं; fprintf (stderr, "dnssrvr:% s \ n", inet_ntop (AF_INET, और _res.nsaddr_list [i] .sin_addr, buf, sizeof buf)); } 'आईपी पते को प्रारूपित करने के लिए। – caf
अच्छा बिंदु, बहुत साफ। धन्यवाद। –