सॉकेट एपीआई आईईटीएफ आरएफसी द्वारा शासित है और विंडोज़ डब्लूआरटी आईपीवी 6 सहित सभी प्लेटफॉर्म पर समान होना चाहिए।
आईपीवी 4/आईपीवी 6 अनुप्रयोगों के लिए यह सभीgetaddrinfo()
और getnameinfo()
के बारे में है। getaddrinfo
एक प्रतिभा है - क्या मैं आईएनवी 4, आईपीवी 6 या दोनों किसी विशेष गंतव्य तक पहुंचने के लिए अनन्त प्रश्न को हल करने के लिए ग्राहक के DNS, पोर्ट नाम और क्षमताओं को देख सकता हूं? "या यदि आप दोहरी-स्टैक मार्ग पर जा रहे हैं और आईपीवी 4 मैप किए गए आईपीवी 6 पते वापस करना चाहते हैं, यह भी ऐसा करेगा।
यह एक सीधा sockaddr *
संरचना कि bind()
, recvfrom()
, sendto()
में जोड़ा जा सकता है और socket()
के लिए पता परिवार ... कई मामलों में इसका मतलब है कोई गंदा sockaddr_in(6)
संरचनाओं को भरें और से निपटने के लिए प्रदान करता है।
यूडीपी कार्यान्वयन के लिए मैं दोहरी-स्टैक सॉकेट सेट करने या अधिक आम तौर पर सभी इंटरफेस (INADDR_ANY
) के लिए बाध्यकारी होने के बारे में सावधान रहूंगा। क्लासिक मुद्दा यह है कि, जब पते को लॉक नहीं किया जाता है (bind()
देखें) विशिष्ट इंटरफेस पर और सिस्टम में कई इंटरफेस अनुरोध हैं, तो ओएस रूटिंग टेबल की सनकी के आधार पर कई पतों वाले कंप्यूटरों के लिए प्रतिक्रिया अलग-अलग पतों से पार हो सकती है, भ्रमित अनुप्रयोग प्रोटोकॉल - विशेष रूप से प्रमाणीकरण आवश्यकताओं के साथ किसी भी प्रणाली।
यूडीपी कार्यान्वयन के लिए जहां यह कोई समस्या नहीं है, या टीसीपी, दोहरी स्टैक सॉकेट आईपीवी * -अपने सिस्टम को सक्षम करते समय बहुत समय बचा सकता है। किसी को पूरी तरह से दोहरी-स्टैक पर भरोसा करने के लिए सावधान रहना चाहिए, जहां यह बिल्कुल आवश्यक नहीं है क्योंकि उचित प्लेटफ़ॉर्म (पुरानी लिनक्स, बीएसडी, विंडोज 2003) की कोई कमी नहीं है क्योंकि आईपीवी 6 स्टैक के साथ तैनात किया गया है जो दोहरी स्टैक सॉकेट में सक्षम नहीं है।
इस जानकारी के लिए धन्यवाद, ठीक वही मैं जो खोज रहा था। – Charles
यह कहकर कि Linux पर डिफ़ॉल्ट रूप से IPV6_V6ONLY बंद है गलत है: यह केवल कर्नेल पर नहीं, ऑपरेटिंग सिस्टम पर निर्भर करता है। उदाहरण के लिए, डेबियन जीएनयू/लिनक्स पर, यह हाल ही में डिफ़ॉल्ट रूप से स्विच किया गया। – bortzmeyer
ओएस एक्स भी डिफ़ॉल्ट रूप से इसे बंद कर देता है, लेकिन सबसे अच्छी बात यह है कि इसे हमेशा स्पष्ट रूप से सेट करना है। स्थानीय sysadmin इसे सब के बाद बदल दिया हो सकता है। –