नॉन ब्लॉकिंग सॉकेट क्या होते हैं?
नॉन ब्लॉकिंग सॉकेट क्या होते हैं?

वीडियो: नॉन ब्लॉकिंग सॉकेट क्या होते हैं?

वीडियो: नॉन ब्लॉकिंग सॉकेट क्या होते हैं?
वीडियो: C/C++ में सॉकेट प्रोग्रामिंग भाग - 4 (ब्लॉकिंग बनाम नॉन-ब्लॉकिंग सॉकेट)। 2024, मई
Anonim

गैर - ब्लॉकिंग सॉकेट . इस समस्या का समाधान कहा जाता है " गैर - ब्लॉकिंग सॉकेट "। डिफ़ॉल्ट रूप से, टीसीपी कुर्सियां में हैं " अवरुद्ध "मोड। उदाहरण के लिए, जब आप किसी स्ट्रीम से पढ़ने के लिए recv() को कॉल करते हैं, तो आपके प्रोग्राम पर नियंत्रण तब तक वापस नहीं आता जब तक कि दूरस्थ साइट से कम से कम एक बाइट डेटा पढ़ा न जाए।

तदनुसार, ब्लॉकिंग और नॉन-ब्लॉकिंग सॉकेट क्या है?

में अवरुद्ध मोड, आरईवी, भेजें, कनेक्ट करें (केवल टीसीपी) और स्वीकार करें (केवल टीसीपी) सॉकेट एपीआई कॉल करेगा खंड मैथा अनिश्चित काल तक जब तक अनुरोधित कार्रवाई नहीं की जाती है। में गैर - अवरुद्ध मोड, ये फ़ंक्शन तुरंत वापस आ जाते हैं। वसीयत का चयन करें खंड मैथा जब तक सॉकेट तैयार हो गया है।

कोई यह भी पूछ सकता है कि क्या सॉकेट डिफ़ॉल्ट रूप से अवरुद्ध हैं? द्वारा चूक जाना , टीसीपी कुर्सियां a. में रखा गया है अवरुद्ध तरीका। इसका मतलब है कि कुछ विशिष्ट ऑपरेशन पूरा होने तक नियंत्रण आपके प्रोग्राम में वापस नहीं किया जाता है।

इस संबंध में, आप एक गैर-अवरुद्ध सॉकेट कैसे बनाते हैं?

एक चिह्नित करने के लिए सॉकेट जैसा गैर - अवरुद्ध , हम fcntl सिस्टम कॉल का उपयोग करते हैं। यहां एक उदाहरण दिया गया है: int flags = Guard(fcntl(socket_fd, F_GETFL), "फाइल फ्लैग नहीं मिल सका"); गार्ड (fcntl (socket_fd, F_SETFL, झंडे | O_NONBLOCK), "नहीं हो सका सेट फ़ाइल झंडे");

सॉकेट ब्लॉकिंग क्या है?

ए सॉकेट में हो सकता है" अवरुद्ध मोड "या" गैर-अवरुद्ध तरीका के कार्य कुर्सियां में अवरुद्ध (या तुल्यकालिक) तरीका जब तक वे अपनी कार्रवाई पूरी नहीं कर लेते तब तक वापस न लौटें। यह कहा जाता है अवरुद्ध क्योंकि सॉकेट जिसका फ़ंक्शन कॉल किया गया था वह कुछ भी नहीं कर सकता - अवरुद्ध है - कॉल वापस आने तक।

सिफारिश की: