Java-তে byte signed। তাই ওয়্যার মান 217 এমন একটি octet সরাসরি byte অ্যারে থেকে প্রিন্ট করলে ঋণাত্মক মান হিসেবে দেখা দিতে পারে। এর অর্থ এই নয় যে প্রক্সি কোনো অবৈধ ঋণাত্মক IP ঠিকানা পাঠিয়েছে।

সংরক্ষিত মানটিকে unsigned integer-এ রূপান্তর করুন, যেমন Byte.toUnsignedInt(value) দিয়ে, অথবা ফিল্ডটি পড়ার সময় DataInputStream.readUnsignedByte() ব্যবহার করুন। নেটওয়ার্ক-ক্রমের পোর্টের জন্য দুটি বাইটের কোনো একটিকে signed দশমিক সংখ্যা ধরে না নিয়ে নথিভুক্ত দুই-বাইট মানটি পড়ুন।

উপস্থাপনাকে ফ্রেমিং থেকে আলাদা রাখুন। সকেট রিড অনুরোধের চেয়ে কম বাইট ফেরত দিতে পারে। সম্পূর্ণ ফিল্ড পড়ুন, তারপর SOCKS সংস্করণ ও ঠিকানার ধরন অনুযায়ী ব্যাখ্যা করুন। SOCKS5 ঠিকানায় IPv4 ঠিকানা, IPv6 ঠিকানা বা দৈর্ঘ্য-প্রিফিক্সযুক্ত ডোমেইন নাম থাকতে পারে; নির্দিষ্ট চার-বাইট অনুমান এসবের একটিমাত্র রূপ সামলায়।

ঋণাত্মক দেখানো octet সংশোধন করলে প্রদর্শনের সমস্যা মেটে। কিন্তু ভুল অফসেট থেকে পড়া শুরু করা বা ঠিকানার মাঝপথে থেমে যাওয়া পার্সার ঠিক হয় না।

সম্পর্কিত নিবন্ধ