Java'da byte işaretlidir. Bu nedenle kablo değeri 217 olan bir oktet, doğrudan bir bayt dizisinden yazdırıldığında negatif değer olarak görünebilir. Bu, proxy'nin geçersiz bir negatif IP adresi gönderdiği anlamına gelmez.

Saklanan değeri işaretsiz bir tam sayıya dönüştürün, örneğin Byte.toUnsignedInt(value) ile, veya alanı okurken DataInputStream.readUnsignedByte() kullanın. Ağ sırasındaki bir bağlantı noktası için baytlardan birini işaretli ondalık sayı olarak ele almak yerine belgelenen iki baytlık değeri okuyun.

Gösterimi çerçevelemeden de ayırın. Bir soket okuması istenenden daha az bayt döndürebilir. Alanın tamamını okuyun, ardından SOCKS sürümüne ve adres türüne göre yorumlayın. SOCKS5 adresleri bir IPv4 adresi, bir IPv6 adresi veya uzunluk önekli bir alan adı içerebilir; sabit dört baytlık varsayım bu biçimlerden yalnızca birini kapsar.

Negatif görünen bir okteti düzeltmek görüntüleme sorununu çözer. Ancak yanlış konumdan okumaya başlayan veya adresin ortasında duran bir ayrıştırıcıyı düzeltmez.

İlgili makaleler