मैं अपने वितरित सिस्टम के लिए एक संदेश परत लिख रहा हूं। मैं आईओसीपी, यानी सॉकेट.XXXAsync विधियों का उपयोग कर रहा हूँ।सॉकेटएसिंसेन्ट आर्ट्स बफर शून्य से भरा है
यहाँ कुछ सुंदर के करीब है कि मैं क्या कर रहा हूँ (वास्तव में, समारोह प्राप्त मेरे अपने पर आधारित है) है: http://vadmyst.blogspot.com/2008/05/sample-code-for-tcp-server-using.html
क्या मैं अब पता चला है कि कार्यक्रम के शुरू में (दो परीक्षण सर्वर एक-दूसरे से बात करते हैं) मुझे हर बार कई SAEA ऑब्जेक्ट मिलते हैं जहां .Buffer पूरी तरह से शून्य से भरा हुआ है, फिर भी। BytesTransferred बफर का आकार (मेरे मामले में 1024) है।
इसका क्या अर्थ है? क्या मुझे एक विशेष शर्त की जांच करने की ज़रूरत है? मेरा सिस्टम इसे अपूर्ण संदेश के रूप में व्याख्या करता है और आगे बढ़ता है, लेकिन मुझे आश्चर्य है कि क्या मुझे वास्तव में कुछ डेटा याद आ रहा है। मैं इस धारणा के तहत था कि अगर कुछ भी प्राप्त नहीं हुआ था, तो आपको कॉलबैक नहीं मिलेगा। किसी भी मामले में, मैं वायरशर्क में देख सकता हूं कि
मुझे निम्न मिला है जब मैंने इसे गोगल किया, लेकिन मुझे यकीन नहीं है कि मेरी समस्या एक जैसी है: http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/40fe397c-b1da-428e-a355-ee5a6b0b4d2c
http://go4answers.webhost4life.com/Example/socketasynceventargs-buffer-not-ready-121918.aspx
मेरे पास खोए गए डेटा से कोई डेटा प्रोसेसिंग त्रुटियां नहीं हैं, इसलिए मुझे लगता है कि कुछ भी खो गया नहीं है। लेकिन यह अभी भी सवाल छोड़ देता है कि विधि कुछ भी नहीं, कई बार क्यों वापस आ जाएगी। – Carlos
आपके संक्षिप्त विवरण (कोड के साथ) के बिना आपको समाधान प्रदान करना मुश्किल है। हालांकि मुझे सॉकेट के साथ अनुभव था और मैं उच्च अबास्ट्रक्शन - नेटवर्क स्ट्रीम का उपयोग करने की सिफारिश कर सकता हूं। नेटवर्क स्ट्रीम में एसिंक कॉलबैक की सभी क्षमताएं हैं जिनका आप उपयोग करना चाहते हैं। Http://msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.aspx और http://msdn.microsoft.com/en-us/library/system.net.sockets पर देखें। networkstream.beginwrite.aspx एचटीएच –
क्या यह वही अंतर्निहित कॉल है? यह उपयोगी लगता है। साथ ही, जिस कोड का मैं जिक्र कर रहा हूं वह लिंक में है। – Carlos