सॉकेट एपीआई टीसीपी / आईपी और यूडीपी / आईपी संचार के लिए डी-फैक्टो मानक है (यानी, जैसा कि हम जानते हैं, नेटवर्किंग कोड)। हालांकि, इसके मुख्य कार्यों में accept()
से एक, थोड़ा जादुई है।
एक अर्ध-औपचारिक परिभाषा उधार लेने के लिए:
स्वीकार () का उपयोग सर्वर साइड पर किया जाता है। यह दूरस्थ क्लाइंट से एक नया टीसीपी कनेक्शन बनाने के लिए प्राप्त आवक प्रयास को स्वीकार करता है, और इस कनेक्शन के सॉकेट एड्रेस जोड़ी के साथ जुड़ा एक नया सॉकेट बनाता है।
दूसरे शब्दों में, accept
एक नया सॉकेट लौटाता है जिसके माध्यम से सर्वर नए जुड़े क्लाइंट के साथ संवाद कर सकता है। पुराने सॉकेट (जिस accept
पर कॉल किया जाता था) खुले रहते हैं, उसी पोर्ट पर, नए कनेक्शन के लिए सुनते हैं।
कैसे accept
काम करता है ? इसे कैसे लागू किया जाता है? इस विषय पर बहुत भ्रम है। कई लोग दावा करते हैं कि स्वीकार एक नया पोर्ट खोलता है और आप क्लाइंट से इसके माध्यम से संवाद करते हैं। लेकिन यह स्पष्ट रूप से सच नहीं है, क्योंकि कोई नया पोर्ट नहीं खोला गया है। आप वास्तव में विभिन्न ग्राहकों के साथ एक ही पोर्ट के माध्यम से संवाद कर सकते हैं, लेकिन कैसे? जब कई धागे recv
एक ही पोर्ट पर कॉल करते हैं, तो डेटा को कैसे जाना जाता है?
मुझे लगता है कि यह क्लाइंट के पते के सॉकेट डिस्क्रिप्टर के साथ जुड़े होने की तर्ज पर कुछ है, और जब भी डेटा recv
इसके माध्यम से आता है तो सही सॉकेट में रूट किया जाता है, लेकिन मुझे यकीन नहीं है।
इस तंत्र की आंतरिक कार्यप्रणाली का गहन विवरण प्राप्त करना बहुत अच्छा होगा।