Java tilida byte ishorali. Shuning uchun tarmoqdagi qiymati 217 bo‘lgan oktet bayt massividan to‘g‘ridan-to‘g‘ri chop etilganda manfiy qiymat sifatida ko‘rinishi mumkin. Bu proksi noto‘g‘ri manfiy IP manzil yubordi degani emas.

Saqlangan qiymatni ishorasiz butun songa aylantiring, masalan, Byte.toUnsignedInt(value) yordamida yoki maydonni o‘qiyotganda DataInputStream.readUnsignedByte() dan foydalaning. Tarmoq tartibidagi port uchun har qanday baytni ishorali o‘nlik son deb qabul qilish o‘rniga hujjatlashtirilgan ikki baytli qiymatni o‘qing.

Taqdimotni ramkalashdan ham ajrating. Soketdan o‘qish so‘ralganidan kamroq bayt qaytarishi mumkin. Butun maydonni o‘qing, so‘ngra uni SOCKS versiyasi va manzil turiga ko‘ra talqin qiling. SOCKS5 manzillari IPv4 manzili, IPv6 manzili yoki uzunlik prefiksli domen nomini o‘z ichiga olishi mumkin; to‘rt baytli qat’iy taxmin bu shakllardan faqat bittasini qamrab oladi.

Manfiy ko‘ringan oktettni tuzatish ko‘rsatish muammosini hal qiladi. Lekin noto‘g‘ri joydan o‘qishni boshlagan yoki manzil o‘rtasida to‘xtagan parserni tuzatmaydi.

O'xshash maqolalar