2009-02-22 12 views
7

मैं एक सॉकेट को असीमित रूप से जोड़ रहा हूं (O_NONBLOCK + कनेक्ट)। पॉज़िक्स मानक निर्दिष्ट करता है कि सॉकेट कनेक्ट होने के बाद सॉकेट के लिए फ़ाइल डिस्क्रिप्टर को लिखने के लिए तैयार किया जाना चाहिए। ऐसा लगता है कि एसिंक कनेक्ट के दौरान विफलताओं के बारे में कुछ भी नहीं लगता है।एसिंक सॉकेट कनेक्ट से रिपोर्ट की गई त्रुटि कैसा है?

लिनक्स पर इसका परीक्षण करते समय, ऐसा लगता है कि कभी-कभी मुझे इस स्थिति में पोलौट और कभी-कभी पोलरर मिल रहा है। क्या व्यवहार में कोई पैटर्न है? क्या मैं इसे त्रुटियों की रिपोर्ट एक ही तरीके से कर सकता हूं? क्या पॉसिक्स कुछ ऐसा कहता है जिसे मैंने अनदेखा किया है?

उत्तर

4

डी जे बर्नस्टीन में कुछ सामान है जो ऐसा लगता है कि यह प्रासंगिक हो सकता है: http://cr.yp.to/docs/connect.html। विशेष रूप से वह त्रुटियों को दूर करने के कई अलग-अलग तरीकों का सुझाव देता है।

यूनिक्स सॉकेट पूछे जाने वाले प्रश्न Connect with timeout पर एक अनुभाग, कि getsockopt

+0

का उपयोग कर दोनों ग्रंथों को लगता है कि कनेक्ट कनेक्शन सफलता/असफलता POLLOUT घटना के बारे में उपयोगकर्ता को सूचित एक असफल कनेक्शन से त्रुटि मिल रही शामिल है। हालांकि, मैं जो देख रहा हूं वह यह है कि इस उद्देश्य के लिए लिनक्स या तो पोलौट या पोलरर का उपयोग करता है। –

संबंधित मुद्दे