Nombor negatif dalam alamat SOCKS Java bukan IP negatif
Baca medan alamat SOCKS sebagai nilai protokol tanpa tanda apabila menghuraikannya dengan API bait Java.
Dalam Java, byte adalah bertanda. Oleh itu, oktet yang nilai wayarnya 217 boleh kelihatan sebagai nilai negatif apabila dicetak terus daripada tatasusunan bait. Ini tidak bermakna proksi menghantar alamat IP negatif yang tidak sah.
Tukar nilai tersimpan kepada integer tanpa tanda, contohnya dengan Byte.toUnsignedInt(value), atau gunakan DataInputStream.readUnsignedByte() semasa membaca medan itu. Untuk port dalam susunan rangkaian, baca nilai dua bait yang didokumenkan dan bukannya menganggap mana-mana bait sebagai nombor perpuluhan bertanda.
Pisahkan juga perwakilan daripada pembingkaian. Bacaan soket boleh mengembalikan lebih sedikit bait daripada yang diminta. Baca keseluruhan medan, kemudian tafsirkannya mengikut versi SOCKS dan jenis alamat. Alamat SOCKS5 boleh mengandungi alamat IPv4, alamat IPv6 atau nama domain dengan awalan panjang; andaian tetap empat bait hanya meliputi satu daripada bentuk tersebut.
Membetulkan oktet yang kelihatan negatif menyelesaikan masalah paparan. Ia tidak membaiki penghurai yang mula membaca pada offset yang salah atau berhenti di tengah-tengah alamat.