जब सॉकेट को select()
पर कॉल करके लिखने के लिए ठीक होने के रूप में संकेत दिया जाता है, तो मुझे कैसे पता चलेगा कि मैं ब्लॉक किए बिना कितना डेटा भेज सकता हूं? (पूर्ण भेजने बफ़र्स आदि के मामले में)चयन() का उपयोग करते समय कभी भी ब्लॉक भेज देगा?
select()
द्वारा लौटाए गए सेट में शामिल किए जाने को दर्शाता है कि सॉकेट डेटा की कम से कम एक बाइट के लिए तैयार है, और send()
तो लिखित बाइट्स की एक छोटी गिनती वापस आ जाएगी?
या जब यह send()
पर len
पैरामीटर के साथ उपलब्ध बफर स्पेस से बड़ा है तो यह अवरुद्ध होगा? यदि हां, तो मैं अधिकतम राशि कैसे जानूं?
मैं लिनक्स पर नियमित सी सॉकेट का उपयोग कर रहा हूं।
यदि आपका एपीआई इसका समर्थन करता है तो आप 'SO_SNDLOWAT' विकल्प का उपयोग कर सकते हैं। इस तरह आप कम से कम बाइट चुन सकते हैं जिन्हें लिखने योग्य होना चाहिए। दूसरे विकल्प के लिए – cnicutar