जब हम "नेटवर्क प्रोग्रामिंग" की तुलना में "सॉकेट प्रोग्रामिंग" के बारे में बात करते हैं, तो क्या कोई बड़ा अंतर है?
क्या कुछ ऐसे विषय हैं जो "नेटवर्क प्रोग्रामिंग" को कवर करते हैं लेकिन "सॉकेट प्रोग्रामिंग" को नहीं?
जब हम "नेटवर्क प्रोग्रामिंग" की तुलना में "सॉकेट प्रोग्रामिंग" के बारे में बात करते हैं, तो क्या कोई बड़ा अंतर है?
क्या कुछ ऐसे विषय हैं जो "नेटवर्क प्रोग्रामिंग" को कवर करते हैं लेकिन "सॉकेट प्रोग्रामिंग" को नहीं?
जवाबों:
सॉकेट प्रोग्रामिंग (शब्द का कम से कम सामान्य रूप से उपयोग किया जाता है) एक विशिष्ट नेटवर्क एपीआई के लिए प्रोग्रामिंग है। सॉकेट्स आईपी-आधारित प्रोटोकॉल (मुख्य रूप से टीसीपी और यूडीपी) 1 का समर्थन करते हैं ।
विभिन्न अन्य एपीआई का उपयोग करके नेटवर्क प्रोग्रामिंग की जा सकती है। विंडोज में WNet * और Net * फ़ंक्शन जैसे कई प्रोटोकॉल-स्वतंत्र API हैं। विंडोज के पुराने संस्करणों में भी NetBIOS / NetBEUI (नेटबीआईओएस एंड यूजर इंटरफेस) का इस्तेमाल किया गया, और सबसे समर्थित (और शायद अभी भी) IPX / SPX (एक पुराना नेटवेयर प्रोटोकॉल) है।
हालाँकि, अधिकांश वर्तमान नेटवर्क प्रोग्रामिंग या तो सीधे सॉकेट्स का उपयोग करके की जाती है, या सॉकेट्स के शीर्ष पर विभिन्न अन्य परतों का उपयोग किया जाता है (उदाहरण के लिए, HTTP पर बहुत अधिक किया जाता है, जो सामान्य रूप से सॉकेट्स पर टीसीपी के साथ लागू किया जाता है)। टीसीपी / आईपी और यूडीपी / आईपी (साथ ही कई अन्य आईपी-आधारित प्रोटोकॉल) सॉकेट इंटरफेस के माध्यम से मुख्य रूप से किए जाते हैं। सिद्धांत रूप में, अन्य प्रोग्रामिंग इंटरफेस का उपयोग किया जा सकता है, लेकिन व्यवहार में सॉकेट पर्याप्त लगते हैं, इसलिए इसे बदलने में बहुत रुचि नहीं है। हालांकि, मुझे यह उल्लेख करना चाहिए कि विंडोज सॉकेट्स (WinSock) में कुछ एक्सटेंशन हैं जो विंडोज के लिए कम या ज्यादा अद्वितीय हैं। मुझे लगता है कि यह कुछ तर्क के लिए खुला है कि क्या इन एक्सटेंशनों का उपयोग करने वाला कोड वास्तव में "सॉकेट्स" कोड के रूप में योग्य है या नहीं - वे समान अवधारणाओं के आधार पर एक्सटेंशन हैं, लेकिन कोड जो उन्हें उपयोग नहीं करता है ' टी सामान्य रूप से अन्य प्रणालियों के लिए पोर्टेबल। मुझे लगता है कि क्या यह "सॉकेट्स" के रूप में योग्य है या नहीं, यह मुख्य रूप से इस बात पर निर्भर करता है कि आप सॉकेट्स को एक अवधारणा के रूप में सोचते हैं, या फ़ंक्शंस, पैरामीटर आदि का एक बहुत विशिष्ट सेट।
संपादित करें (टिप्पणी के जवाब में):
यह कहना थोड़ा मुश्किल है कि क्या "जानने वाले सॉकेट" का मतलब टीसीपी और यूडीपी के बारे में "सब कुछ" जानना है। चलो चीजों के सिर्फ एक छोटे टुकड़े पर विचार करें: सॉकेट्स के लिए एक विशिष्ट डेमो प्रोग्राम एक क्लाइंट / सर्वर चैट प्रोग्राम बना रहा है। क्लाइंट सर्वर से कनेक्ट होता है, और जब उपयोगकर्ता एक क्लाइंट पर कुछ टाइप करता है, तो यह अन्य क्लाइंट के लिए अग्रेषित हो जाता है जो उसी सर्वर से जुड़े होते हैं। प्रत्येक क्लाइंट प्रदर्शित करता है कि सर्वर से क्या आता है, और उपयोगकर्ता को अन्य क्लाइंट को भेजे जाने वाले संदेशों में टाइप करने देता है।
उसी समय, विचार करें कि "वास्तविक" चैट कार्यक्रम जैसे कि एआईएम, विंडोज मैसेंजर, आईचैट आदि क्या शामिल हैं। न केवल पाठ, बल्कि आवाज, वीडियो, फ़ाइल स्थानांतरण, समूहों, सूचियों, आदि को संभालने के लिए, एक विशिष्ट कार्यक्रम में संभवतः एक दर्जन अलग-अलग मानक शामिल होते हैं, जिसमें एसआईपी, STUN, TURN, RTCP, RTP, XAMPP, mDNS, आदि शामिल हैं। ।
IMO, कोई व्यक्ति जो "सॉकेट्स जानता है" को कुछ घंटों में मदद फ़ाइलों (और ऐसे) शोध करने में ज्यादा समय खर्च किए बिना पहले (डेमो-लेवल, टेक्स्ट-ओनली) चैट प्रोग्राम को कोड करने में सक्षम होना चाहिए। जब तक कि वे "वास्तविक" चैट प्रोग्राम पर काम करने के कम से कम कुछ पूर्व अनुभव का दावा नहीं करते, मैं उनसे यह भी उम्मीद नहीं करूंगा कि आरएफसी / मानक ऐसी चीजों पर लागू होते हैं।
समान रूप से लागू होता है: RFC (और विभिन्न अन्य मानकों) की संख्या को देखते हुए, जो उन सभी अलग-अलग चीजों पर लागू होते हैं, जो लोग नेटवर्क पर करते हैं, यह उम्मीद करना अनुचित है कि कोई भी उन सभी को याद रखे। फिर भी, यदि आपके पास ऐसी चीज़ों के लिए आवश्यकताओं का एक सेट है, जो आप लोगों से "स्थानीय" प्रोग्राम को आसानी से संभालने में सक्षम होने की उम्मीद करेंगे, तो बस आवश्यकता के अनुसार "नेटवर्क पर" जोड़ना सामान्य रूप से कठिनाई का एक बड़ा हिस्सा नहीं होना चाहिए। (हालांकि नेटवर्क विलंबता जैसे मुद्दों से निपटना)।
यूनिक्स पर 1 सॉकेट्स यूनिक्स-पारिवारिक सॉकेट का भी समर्थन करते हैं, लेकिन ये (कम से कम सामान्य रूप से) इंट्रा-मशीन आईपीसी के लिए उपयोग किए जाते हैं, नेटवर्किंग नहीं। राउटर प्रबंधन के रूप में ऐसी चीजों के लिए शाब्दिक रूप से दर्जनों अन्य प्रोटोकॉल भी हैं जो सॉकेट वास्तव में समर्थन नहीं करते हैं (कच्चे सॉकेट से परे आपको मनमाना पैकेट बनाने और भेजने की अनुमति देता है)।
"नेटवर्क प्रोग्रामिंग" के लिए कुछ नेटवर्किंग तकनीक की आवश्यकता होगी - उदाहरण के लिए, आरपीसी। सॉकेट्स (सबसे अधिक संभावना है कि आपका मतलब बीएसडी सॉकेट्स) ऐसी तकनीक का एक उदाहरण है। तो "सॉकेट प्रोग्रामिंग" "नेटवर्क प्रोग्रामिंग" का सबसेट है।
हाँ, यह सच है कि नेटवर्क प्रोग्रामिंग के लिए नेटवर्किंग तकनीक की आवश्यकता होती है जबकि दूसरी ओर सॉकेट प्रोग्रामिंग नेटवर्क प्रोग्रामिंग का सबसेट होती है। अधिकांश वर्तमान नेटवर्क प्रोग्रामिंग या तो सीधे सॉकेट्स का उपयोग करके किया जाता है, या सॉकेट्स के शीर्ष पर विभिन्न अन्य परतों का उपयोग किया जाता है।