java - How is this 13 bytes long? -


दो उद्धरण:

प्रोटोकॉल में शेष सभी संदेश < कोड> & lt; लंबाई उपसर्ग & gt; & lt; संदेश आईडी & gt; & lt; पेलोड & gt; लंबाई उपसर्ग एक चार बाइट बिग एंडियन वैल्यू है। संदेश आईडी एक एकल दशमलव बाइट है। पेलोड संदेश निर्भर है

  अनुरोध: & lt; len = 0013 & gt; & lt; id = 6 & gt; & lt; इंडेक्स & gt; & lt; शुरू & gt; & lt; लंबाई & gt;  

अनुरोध संदेश लंबाई निर्धारित है, और एक ब्लॉक अनुरोध करने के लिए प्रयोग किया जाता है। पेलोड में निम्न जानकारी है:

  • सूचकांक: शून्य-आधारित टुकड़ा अनुक्रमणिका निर्दिष्ट
  • आरंभ: पूर्णांक शून्य-आधारित बाइट ऑफसेट को टुकड़ा के भीतर निर्दिष्ट करता है
  • लंबाई: पूर्णांक का अनुरोध किया लंबाई निर्दिष्ट

जब मैं सब कुछ लिखता हूं जो 5 बाइट्स तक चलता है। का उपयोग करना

  बाइटअरेऑन आउटपुटस्ट्रीम बाइटस्ट्रीम = नया बाइटअरेऑनपुटस्ट्रीम (); बाइटस्ट्रीम.लिखित (13); बाइटस्ट्रीम.लिखित (6); बाइटस्ट्रीम। लिखें (सूचकांक); बाइटस्ट्रीम.लिखित (शुरू); बाइटस्ट्रीम.लिखित (लंबाई); संदेश = बाइटस्ट्रीम.टाइबेटएरे ();  

संपादित करें: क्षमा करें, जब मैं इसे लिखा था, तो मुझे परेशान था। इसकी बिट्टोरेन्ट प्रोटोकॉल इसका उपयोग करना।

लिखना () विधि एक बाइट लिखते हैं।

यदि आप इसे एक चार या पूर्णांक भेजते हैं तो यह 8 वी बिट के ऊपर सब कुछ स्ट्रिप करता है & amp; 0xFF।

आपके पास डेटाऑटपुटस्ट्रीम (लिखने, लिखने शोर्ट आदि) के साथ और विकल्प होते हैं, लेकिन यह बड़े एंडियन बाइट क्रम का उपयोग करता है ताकि आपको एक पूर्णांक। रिवर्सबिट्स () (या Short.reverseBytes ()) कॉल करने से पहले कॉल करना पड़ सकता है लिखत XYZ () विधि के मान में।

  बाइटअरेऑनपुटस्ट्रीम बाइटस्ट्रीम = नया बाइटअरेऑनपुटस्ट्रीम (); DataOutputStream डॉट = नया डेटाओटपुटस्ट्रीम (बाइटस्ट्रीम); Dout.writeInt (0x13); // एल: 4 डूट.लिखित (6); // एल: 5 dout.writeShort (सूचकांक); // अनुमान, एल: 7 dout.writeLong (शुरू); // & gt; 4GB समर्थन? एल: 15 dout.writeInt (लंबाई); // क्लाइंट नीचे 2 ^ 17, एल: 1 9 डॉट.फ्लस (); // सुनिश्चित करने के लिए संदेश = बाइटस्ट्रीम। टू बैटएरे ();  

टिप्पणी: युक्ति अनुक्रमणिका , शुरू और लंबाई की लंबाई को नहीं बताती है। मैं सिर्फ उपलब्ध विकल्पों का एक नमूना देना चाहता था।

संपादन 2: डी। शॉली के उत्तर के आधार पर नमूना संपादित किया गया और एक नमूना मिला।


Comments

Popular posts from this blog

c++ - Linux and clipboard -

What is expire header and how to achive them in ASP.NET and PHP? -

sql server - How can I determine which of my SQL 2005 statistics are unused? -