मैं नेटवर्क अनुप्रयोग विकसित करना और सॉकेट एपीआई का उपयोग करना।नेटवर्क बाइट ऑर्डर करने के लिए sockaddr_in6 :: sin6_addr बाइट ऑर्डर कैसे सेट करें?
मैं sockaddr_in6 संरचना के sin6_addr बाइट ऑर्डर को सेट करना चाहता हूं।
16 बिट या 32 बिट चर के लिए, यह आसान है: का प्रयोग htons या htonl:
:// IPv4
sockaddr_in addr;
addr.sin_port = htons(123);
addr.sin_addr.s_addr = htonl(123456);
लेकिन 128 बिट चर के लिए, मुझे पता है कि बाइट क्रम बाइट क्रम नेटवर्क स्थापित करने के लिए न
// IPv6
sockaddr_in6 addr;
addr.sin6_port = htons(123);
addr.sin6_addr.s6_addr = ??? // 16 bytes with network byte order but how to set?
कुछ उत्तर 8 बार (2 * 8 = 16 बाइट्स) के लिए htons का उपयोग कर सकते हैं, या 4 बार (4 * 4 = 16 बाइट्स) के लिए htonl का उपयोग कर सकते हैं, लेकिन मुझे नहीं पता कि कौन सा तरीका सही है।
धन्यवाद।
ईमानदारी से, मैं एक पुस्तकालय विकसित करता हूं। होस्टनाम तक पहुंचने के लिए कुछ सीमाएं हैं। –
@ एमीर सनीयान क्या सीमाएं? पूरा इंटरनेट आईपी पते की बजाय होस्टनाम का उपयोग करता है, और बाद वाले को DNS नामक डेटाबेस में प्रतिनिधि करता है। आपकी स्थिति के बारे में क्या अलग है? किसी भी मामले में आपको बस इतना करना है कि आईपी एड्रेस को ऑक्टेट्स में स्टोर करें, यानी बाइट्स, वही ऑर्डर जैसे आप उन्हें लिखेंगे, और काम पूरा हो जाएगा। – EJP