पर भेजने से कैसे रोकें I पुस्तकालयों (.NET) में कुछ अजीब व्यवहार को अलग करने की कोशिश कर रहे कुछ परीक्षण कर रहे हैं। जब मैं सी ++ के माध्यम से विंसॉक एपीआई का उपयोग करता हूं और बस कॉल करता हूं, तो बंद करें(), मैं विंडोज़ पक्ष को एफआईएन/एसीके पैकेट भेजता हूं और रिमोट साइड एक एसीके पैकेट वापस भेजता है। यही वह है जिसे मैं एक करीबी करीबी कहूंगा। हालांकि, जब मैं सी # में प्रोग्रामिंग देख रहा हूं तो मैं देख रहा हूं कि मैं एक सुंदर बंद कहूंगा।एनईटी पुस्तकालयों को आरएसटी पैकेट को
सी # में, मैं अपने सॉकेट खोलें और फिर, जब यह बंद करने, मैं देख खिड़कियों एक फिन पैकेट केवल जब पहली Socket.Shutdown बुला() भेजें। हालांकि, जब भी मैं Socket.Close() को C# में कॉल करता हूं, एक आरएसटी पैकेट भेजा जाता है और कनेक्शन संक्षेप में गिरा दिया जाता है। यह मुझे भ्रमित करता है क्योंकि, मैंने जो लाइन पढ़ी है, उससे टीसीपी समापन प्रक्रिया एफआईएन/एसीके -> एसीके (दोनों पक्षों से वास्तव में लेकिन अभी के लिए, मैं केवल "मेरी" पक्ष से चिंतित हूं); यानी मिश्रण में एक आरएसटी पैकेट नहीं होना चाहिए। जो मैंने पढ़ा है, जाहिर है, एक आरएसटी पैकेट केवल तभी भेजा जाता है जब रिसीवर कनेक्शन स्थिति के बारे में अनिश्चित है और बाहर निकलना चाहता है।
यह आरएसटी पैकेट .NET में नियोजित शटडाउन पर क्यों भेजा जा रहा है और विंसॉक एपीआई से नियोजित शटडाउन में बिल्कुल नहीं? .NET से एक सुंदर शटडाउन के दौरान एक आरएसटी पैकेट के संचरण को रोकने के लिए कोई तरीका है?
यदि यह महत्वपूर्ण है, तो कोड कोड दोनों में, मैं संबंधित बंद() विधि को कॉल करने से पहले सॉकेट पर सभी उपलब्ध डेटा पढ़ रहा हूं।
यह दिलचस्प है। मुझे देखना होगा कि जब मैं नींद को लागू करता हूं तो क्या होता है। मुझे आश्चर्य है कि और क्या दिखाया जाएगा क्योंकि मुझे नहीं लगता कि यह पूर्ण संदर्भ के लिए व्यवहार्य है (यदि यह काम करता है) जिसमें यह हो रहा है। मैंने व्यवहार को अलग करने के लिए कंकाल कार्यक्रम किए हैं। वैसे भी धन्यवाद क्योंकि मैंने यहां नींद की कॉल का उपयोग करने के बारे में सोचा नहीं था। –