मैं समझता हूं कि टीसीपी सॉकेट के लिए ईसीएनएनआरईएसईटीटी को आरएसटी पैकेट के साथ कुछ करना है। लेकिन मैंने AF_LOCAL सॉकेट के लिए ECONNRESET त्रुटियों को भी पढ़ा है() और लिखें() कॉल पर। इसका क्या मतलब है? ECONNRESET पढ़ने से अलग कैसे है() 0 लौट रहा है या लिखना() ईपीआईपीई फेंक रहा है?ECONNRESET का अर्थ AF_LOCAL सॉकेट के संदर्भ में क्या है?
उत्तर
ऐसा प्रतीत होता है कि ECONNRESET का अर्थ है कि दूसरी तरफ बकाया डेटा को पढ़ने के बिना कनेक्शन बंद कर दिया गया है, और इसे पढ़ने() और लिखने() दोनों पर ट्रिगर किया जा सकता है। लेकिन सटीक व्यवहार ऑपरेटिंग सिस्टम पर निर्भर करता है।
EPIPE
सॉकेट कि पहले से ही बंद कर दिया गया शुरू किया जा करने के लिए जब एक लिखने() रों लगता है, और कोई बकाया बाहर जाने वाले डाटा नहीं है। PF_LOCAL और TCP सॉकेट दोनों के लिए लागू है। उदाहरण (रूबी):
a, b = UNIXSocket.pair
b.close
a.write("foo") # => EPIPE, on all OSes
पढ़ने() लौट 0
उत्प्रेरित जब दूसरे पक्ष कनेक्शन बंद कर दिया गया है, और वहाँ कोई बकाया बाहर जाने वाले डाटा नहीं है। PF_LOCAL और TCP सॉकेट दोनों के लिए लागू है।
a, b = UNIXSocket.pair
b.close
a.read # => 0 bytes, on all OSes
ECONNRESET
लिनक्स पर यह इस तरह बर्ताव करता है:
उत्प्रेरित जब बकाया बाहर जाने वाले डेटा है कि नहीं किया गया है अभी तक दूसरे पक्ष के लिए लिखा गया है। पढ़ें() इसे PF_LOCAL और TCP सॉकेट दोनों के लिए ट्रिगर करता है, लेकिन लिखते हैं() इसे केवल टीसीपी सॉकेट के लिए ट्रिगर करता है; पीएफ_LOCAL सॉकेट ईपीआईपीई ट्रिगर।
विशिष्ट ओएस व्यवहार के लिए उदाहरण देखें। अगर आप जानते हैं कि अन्य ओएस कैसे व्यवहार करते हैं तो कृपया योगदान दें।
उदाहरण 1: PF_LOCAL सॉकेट पर पढ़ें()
a, b = UNIXSocket.pair
a.write("hello")
b.close
a.read
# Linux: ECONNRESET
# OS X : returns 0 bytes
उदाहरण 2: (टीसीपी सॉकेट पर पढ़ें)
# Side A # Side B
s = TCPServer.new('127.0.0.1', 3001)
c = s.accept
c = TCPSocket.new('127.0.0.1', 3001)
c.write("hello")
c.close
c.read
# Linux: ECONNRESET
# OS X : returns 0 bytes
उदाहरण 3: लिखने() PF_LOCAL सॉकेट पर
a, b = UNIXSocket.pair
a.write("hello")
b.close
a.write("world")
# Linux: EPIPE and not ECONNRESET
# OS X : EPIPE and not ECONNRESET
उदाहरण 4: टीसीपी सॉकेट पर लिखें()
# Side A # Side B
s = TCPServer.new('127.0.0.1', 3001)
c = s.accept
c = TCPSocket.new('127.0.0.1', 3001)
c.write("hello")
c.close
c.write("world")
# Linux: ECONNRESET
# OS X : no error
- 1. सॉकेट फ्लश करने का क्या अर्थ है?
- 2. कंप्यूटर विज्ञान के संदर्भ में 'predicate' का अर्थ क्या है?
- 3. प्रोग्रामिंग के संदर्भ में "ऑफ़सेट" का क्या अर्थ है?
- 4. लाइब्रेरी डिज़ाइन के संदर्भ में "कोर" का क्या अर्थ है?
- 5. प्रोफाइलिंग के संदर्भ में frame_dummy का क्या अर्थ है?
- 6. सी में "varName के अपरिभाषित संदर्भ" का अर्थ क्या है?
- 7. IENumerable: ओओपी के संदर्भ में इसका क्या अर्थ है
- 8. सी # में 0u का क्या अर्थ है?
- 9. प्रोग्रेसडिअलॉग में 'अनिश्चित' का अर्थ क्या है?
- 10. इस मामले में "&" का क्या अर्थ है?
- 11. "संदर्भ" और "dereferencing" का अर्थ
- 12. PHP में "&" का अर्थ क्या है?
- 13. "मोनोलिथिक" का क्या अर्थ है?
- 14. वेक्टरनाइज़ेशन का क्या अर्थ है?
- 15. 'बीजिंग' का क्या अर्थ है?
- 16. , कैरेट^का अर्थ क्या है?
- 17. गैर-कॉन्स्टेंस संदर्भ का अमान्य प्रारंभिक अर्थ क्या है?
- 18. "=>" का क्या अर्थ है?
- 19. टेक्स्ट डीएफएम संदर्भ मेनू विकल्प का क्या अर्थ है?
- 20. एफ # में, पाइपलाइनिंग का क्या अर्थ है?
- 21. फ़ंक्शन कॉल में "()" का अर्थ क्या है?
- 22. आईडी का अर्थ क्या है?
- 23. {} का क्या अर्थ है?
- 24. "===" का क्या अर्थ है?
- 25. रूबी में "$" चरित्र का क्या अर्थ है?
- 26. "कर्ल" का क्या अर्थ है?
- 27. PHP संदर्भ में थ्रेड सुरक्षित अर्थ क्या है?
- 28. फ़ंक्शन परिभाषा के अंत में "कॉन्स्ट" का अर्थ क्या है (संदर्भ में)?
- 29. हास्केल में सूचियों के संदर्भ में "@" प्रतीक का क्या अर्थ है?
- 30. एक्लिप्स में जावा विकास के संदर्भ में 'हेडलेस' शब्द का क्या अर्थ है?