2012-05-17 12 views
6

मैं नेट ब्राउज़ करके हाल ही में यूडीपी सॉकेट के बारे में सीख रहा हूं और समझा रहे सभी पेजों का उल्लेख यह था कि यूडीपी सॉकेट " कनेक्शन कम "। यह, अगर मैं समझता हूं कि इसका सही अर्थ है कि किसी के पास दो सॉकेट्स के बीच "कनेक्शन" नहीं है, लेकिन इसके बजाय यह निर्धारित किए बिना निर्धारित अंतराल पर डेटाग्राम पैकेट को शूट करता है कि दूसरा अंत सुन रहा है या नहीं।"कनेक्शन कम" बूस्ट पर कनेक्ट करें :: asio :: ip :: udp :: सॉकेट

तो मैं जाने के लिए और बढ़ावा :: asio :: आईपी :: udp :: सॉकेट docs पढ़ना शुरू और लगता है कि यह एपीआई का उल्लेख है की तरह:

  • async_connect: एक अतुल्यकालिक शुरू कनेक्ट
  • async_receive: कनेक्टेड सॉकेट पर एसिंक्रोनस प्राप्त प्रारंभ करें।
  • async_send: कनेक्टेड सॉकेट पर एक एसिंक्रोनस भेजें प्रारंभ करें।

अब यह एक नौसिखिया के लिए थोड़ा उलझन में है। मैं (likehood के क्रम में :)) मेरी भ्रम के लिए 3 संभावित कारणों पा सकते हैं

  1. मैं asio कार्यान्वयन कनेक्शन virtualize करने के लिए पर्दे के पीछे कुछ कर रहा है कुछ
  2. याद कर रहा हूँ। जब आप basic_datagram_socket::async_connect उदाहरण के लिए पृष्ठ को खोलने में वहाँ टीसीपी सॉकेट (यूडीपी लोगों के बजाय) instantiating है
  3. प्रलेखन गलत

है वहाँ भी डॉक्स में मामूली खराबी है।

क्या कोई मुझे प्रबुद्ध करेगा?

उत्तर

11

एकल यूनिक्स विशिष्टता क्या connect संपर्क-रहित सॉकेट के लिए करता है की एक बेहतर व्याख्या है:

की शुरुआत सॉकेट नहीं कनेक्शन मोड है, तो कनेक्ट() सॉकेट के साथियों के पते सेट है, लेकिन कोई कनेक्शन बनाया गया है। SOCK_DGRAM सॉकेट के लिए, सहकर्मी पता पहचानता है कि सभी डेटाग्राम को बाद में प्रेषण() कॉल पर भेजा जाता है, और बाद में recv() कॉल के लिए दूरस्थ प्रेषक को सीमित करता है।

+0

+1 और यदि यह स्पष्ट नहीं था, तो यह मूल प्रश्न में भ्रम # 1 है। –