Negative tal i ein Java SOCKS-adresse er ikkje negative IP-adresser
Les SOCKS-adressefelt som usignerte protokollverdiar når du parsar dei med Java sine byte-API-ar.
I Java er byte signert. Ein oktett med trådverdien 217 kan difor framstå som ein negativ verdi når han skrivast ut direkte frå ein byte-array. Det tyder ikkje at proxyen sende ei ugyldig negativ IP-adresse.
Konverter den lagra verdien til eit usignert heiltal, til dømes med Byte.toUnsignedInt(value), eller bruk DataInputStream.readUnsignedByte() medan du les feltet. For ein port i nettverksrekkjefølgje les du den dokumenterte to-byte-verdien i staden for å handsame ein av byta som eit signert desimaltal.
Skil òg framstillinga frå innramminga. Ei socket-lesing kan returnere færre byte enn forespurt. Les heile feltet, og tolk det deretter etter SOCKS-versjon og adressetype. SOCKS5-adresser kan innehalde ei IPv4-adresse, ei IPv6-adresse eller eit domenenamn med lengdeprefiks; ein fast føresetnad om fire byte dekkjer berre éin av desse formene.
Å rette ein oktett som ser negativ ut løyser visingsproblemet. Det rettar ikkje ein parser som byrja å lese på feil offset eller stoppa midt i adressa.