मैं एक टीसीपी स्ट्रीम पर जा रहा एक संदेश प्रोटोकॉल लिखने वाला हूं। रिसीवर को यह जानने की जरूरत है कि संदेश सीमाएं कहां हैं।एक स्ट्रीम प्रोटोकॉल लिखना: संदेश आकार फ़ील्ड या संदेश डिलीमीटर?
मैं या तो 1) निश्चित लंबाई संदेश, 2) आकार फ़ील्ड भेज सकता हूं ताकि रिसीवर जानता हो कि संदेश कितना बड़ा है, या 3) एक अद्वितीय संदेश टर्मिनेटर (मुझे लगता है कि यह संदेश में कहीं और नहीं उपयोग किया जा सकता है) ।
मैं दक्षता कारणों से # 1 का उपयोग नहीं करूंगा।
मुझे # 2 पसंद है, लेकिन क्या स्ट्रीम के लिए सिंक से बाहर निकलना संभव है?
मुझे विचार # 3 पसंद नहीं है क्योंकि इसका मतलब है कि रिसीवर समय से पहले संदेश के आकार को नहीं जान सकता है और यह भी आवश्यक है कि टर्मिनेटर संदेश में कहीं और दिखाई न दे।
# 2 के साथ, यदि सिंक से बाहर निकलना संभव है, तो क्या मैं टर्मिनेटर जोड़ सकता हूं या क्या मैं कभी भी सिंक से बाहर नहीं होने की गारंटी देता हूं जब तक प्रेषक प्रोग्राम जो भेजता है उसमें सही होता है? क्या यह # 2 और # 3 करना आवश्यक है?
कृपया मुझे बताएं।
धन्यवाद, jbu
_ इसके अलावा, ट्रांसमिशन में संदेश आकार को जानना, प्राप्त करने वाले अंतराल पर स्मृति आवंटित करना आसान बना देगा ._ देखभाल का एक शब्द: यह सुनिश्चित करना सुनिश्चित करें कि कितनी मेमोरी आवंटित की जाती है। अन्यथा, आप उन कस्टम पैकेट्स के साथ डीडीओएस हमलों के लिए अतिसंवेदनशील हैं जिनके आकार 2^32-1 (या फिर आपके पूर्णांक बड़े हैं) का आकार क्षेत्र है, जो आपकी याददाश्त को तेज़ी से भरते हैं। – Kenji