शुरुआती सवाल फिर से: एक सवाल मैं बहुत पहले नहीं पूछा के पालन अप तरह।सॉकेट कब होता है। रिसीव डेटा वापस कर देता है?
मैं इस तुल्यकालिक सॉकेट ट्यूटोरियल http://msdn.microsoft.com/en-us/library/6y0e13d3.aspx, नीचे दिए गए कोड में विशेष रूप से एक ही लाइन समझने की कोशिश कर रहा हूँ।
प्रश्न: मैं यह सुनिश्चित करना चाहता हूं कि मैं प्रोग्राम प्रवाह को सही समझ रहा हूं। जब handler.Receive (बाइट) वापसी करता है? इसे वापस और पूर्णांक में प्राप्त बाइट की संख्या संग्रहीत करती है bytesRec ** जब यह "अतिप्रवाह" और 1024bytes की तुलना में अधिक प्राप्त हुआ है? ** और अगर कि इतने है, और यह मूर्खतापूर्ण ध्वनि सकता है, तो क्या होता है और अधिक बाइट्स आने के रूप में यह * डेटा * चर में 1024 बाइट्स भंडारण किया जाता है और अधिक बाइट्स है कि उस समय पर पहुंचने से किया जा सकता है के लिए नहीं सुन रहा? या मुझे इसके बारे में चिंता नहीं करनी चाहिए और नेट की देखभाल करना चाहिए?
Socket handler = listener.Accept();
data = null;
// An incoming connection needs to be processed.
while (true) {
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
// My question is WHEN does the following line
// get to be executed
data += Encoding.ASCII.GetString(bytes,0,bytesRec);
if (data.IndexOf("<EOF>") > -1) {
break;
}
}
आप सोच सकते हैं कि फ़ाइल से पढ़ने की तरह बहुत कुछ प्राप्त करें। यदि फ़ाइल में अभी भी डेटा के पर्याप्त बाइट हैं (इस मामले में नेटवर्क स्टैक), तो यह आपके बफर के आकार को शीर्ष पर वापस कर देगा, अन्यथा यह शेष डेटा लौटाएगा (जो आपके बफर आकार से कम हो सकता है) । – shellster
@shellster: की तरह। लेकिन वह विवरण बहुत महत्वपूर्ण तथ्य पर चमकता है कि नेटवर्क स्टैक आपको डेटा चुनने का निर्णय ले सकता है जो इसे * चुनता है *। कोई गारंटी नहीं है। – Jon
@ जोन एक शानदार उत्तर के लिए धन्यवाद। जब आप कहते हैं, "नेटवर्क स्टैक आपके द्वारा चुने गए किसी भी हिस्से में डेटा को सौंपने का निर्णय ले सकता है" क्या इसका मतलब यह है कि मेरा ग्राहक भेज सकता है "क्षमा करें प्रिय, मैं अकेला नहीं हूं लेकिन विवाहित हूं" लेकिन मेरा सर्वर पहले "विवाहित" हो सकता है "माफ़ करना, प्रिय"? उपरोक्त माइक्रोसॉफ्ट कोड में ऐसी कोई त्रुटि जांच नहीं होती है ... टीसीपी/आईपी इसकी देखभाल नहीं करेगा इसलिए मुझे सही क्रम में डेटा प्राप्त होता है –