I Java er byte signeret. En oktet med trådværdien 217 kan derfor fremstå som en negativ værdi, når den udskrives direkte fra et byte-array. Det betyder ikke, at proxyen har sendt en ugyldig negativ IP-adresse.

Konverter den gemte værdi til et usigneret heltal, for eksempel med Byte.toUnsignedInt(value), eller brug DataInputStream.readUnsignedByte(), mens du læser feltet. For en port i netværksrækkefølge skal du læse den dokumenterede to-byte-værdi i stedet for at behandle en af byterne som et signeret decimaltal.

Adskil også repræsentation fra indramning. En socket-læsning kan returnere færre bytes end ønsket. Læs hele feltet, og fortolk det derefter efter SOCKS-version og adressetype. SOCKS5-adresser kan indeholde en IPv4-adresse, en IPv6-adresse eller et domænenavn med længdepræfiks; en fast antagelse om fire bytes dækker kun én af disse former.

At rette en oktet, der ser negativ ud, løser visningsproblemet. Det retter ikke en parser, der er begyndt at læse ved en forkert offset eller er stoppet midt i adressen.

Relaterede artikler