पर आईपी को हल करें मैं एक आईपी पते से होस्टनाम को हल करने का प्रयास कर रहा हूं। मैंने gethostbyaddr()
और getnameinfo()
का उपयोग करने का प्रयास किया है लेकिन कई मामलों में होस्टनाम बिल्कुल हल नहीं किया गया है। क्या आईपी एड्रेस को वैध होस्टनाम में बदलने का कोई बेहतर तरीका है?होस्ट नाम
char* ip = argv[1];
// using gethostbyaddr()
hostent * phe = gethostbyaddr(ip, strlen(ip), AF_INET);
if(phe) {
cout << phe->h_name << "\n";
}
// using getnameinfo()
char hostname[260];
char service[260];
sockaddr_in address;
memset(&address, 0, sizeof(address));
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr(ip);
int response = getnameinfo((sockaddr*)&address,
sizeof(address),
hostname,
260,
service,
260,
0);
if(response == 0) {
cout << hostname << "\n";
}
सभी आईपी पते में रिवर्स होस्ट नाम नहीं है। आपको क्या लगता है कि आईपी पते जो मेजबान नाम नहीं लौटाते हैं, उनमें से एक होना चाहिए? – Bruno
@ ब्रूनो - कुछ मामलों में जब मुझे होस्टनाम नहीं मिलता है, तो मैंने टर्मिनल से 'nslookup
' चलाने की कोशिश की है और कमांड होस्टनाम लौटाता है। तो मैं सोच रहा था कि शायद इस तरह की चीज करने का एक और सटीक तरीका है। – Cyclonecodeमुझे पता है कि यह कोई जवाब नहीं है लेकिन आपको getaddrinfo और getnameinfo के साथ रहना चाहिए क्योंकि वे दोनों मामलों में आईपीवी 4 और आईपीवी 6 नेटवर्क पते के लिए उपयोगी हैं। – excanoe