मुझे पता है कि इस प्रकार के प्रश्न का एक लंबा इतिहास है, लेकिन जिस तरह से मैं इसका उपयोग कर रहा हूं वह सही 'नेट रास्ता' होना चाहिए और फिर भी यह काम नहीं कर रहा है।सी #/नेट सॉकेट। शटडाउन
मेरे पास एक छोटा सिंक्रोनस आईपी सर्वर डिमन है जो एक साधारण स्वीकार्य सॉकेट करता है, कुछ सामान, socket.send, socket.shutdown, socket.close करें। मेरा ग्राहक एक और छोटा सी # ऐप है जो URLDownloadToFile करता है।
क्या होता है यूआरएल डाउनलोड टॉफाइलफेल (0x800C0008) के साथ विफल रहता है .. सोचता है कि इसका डाउनलोड संसाधन विफल रहा है।
मेरे सर्वर साइड अंत अनुक्रम है:
socket.Shutdown(Both);
socket.Close();
अगर मैं
socket.Disconnect();
socket.Close();
के लिए इसे बदल (मैं sockopt अभी भी ताजा सच है, समय समाप्ति के साथ ऊपर खोलने के 5 सेकेंड)
इस काम करता है महान।
क्या मुझे शटडाउन विधि पर कुछ याद आ रहा है .. यह 'जादू बुलेट' जैसा लगता है एमएस चाहता है कि आप एक बाहर निकलने के लिए सावधानीपूर्वक उपयोग करने के लिए उपयोग करें जो आखिरकार शेष शेष डेटा भेज देगा।
कुल मिलाकर, (और यह सही नहीं हो सकता है) यह करीब की तरह दिखाई देता है .. किसी भी async प्रसंस्करण को मारता है जो शटडाउन() से प्रगति पर हो सकता है।
कोई विचार?
बिल्कुल नहीं कॉल करने से पहले अनावश्यक:
बल समापन उपयोग के लिए डिस्कनेक्ट। उद्धृत पाठ कहता है कि डिस्कनेक्ट करने से पहले आपको सेटिंग्स को बदलने की जरूरत है। यदि नहीं, तो यह डेटा को त्याग देगा। – usr
क्या यह मेरा उत्तर इंगित नहीं करता है? यदि आप सेटिंग बदलते हैं (जो ओपी इंगित करता है कि वे करते हैं) यदि आप टाइमआउट व्यवहार से खुश हैं तो आपको शट डाउन की आवश्यकता नहीं है ... – ShuggyCoUk