Negatiiviset luvut Java SOCKS -osoitteessa eivät ole negatiivisia IP-osoitteita
Lue SOCKS-osoitteen kentät etumerkittöminä protokolla-arvoina, kun jäsennät niitä Javan byte-API-rajapinnoilla.
Javassa byte on etumerkillinen. Siksi oktetti, jonka verkkoarvo on 217, voi näyttää negatiiviselta arvolta, kun se tulostetaan suoraan tavutaulukosta. Se ei tarkoita, että välityspalvelin lähetti virheellisen negatiivisen IP-osoitteen.
Muunna tallennettu arvo etumerkittömäksi kokonaisluvuksi esimerkiksi Byte.toUnsignedInt(value)-komennolla tai käytä DataInputStream.readUnsignedByte()-metodia kenttää lukiessasi. Verkkotilaisessa portissa lue dokumentoitu kaksitavuinen arvo sen sijaan, että käsittelisit kumpaakaan tavua etumerkillisenä desimaalilukuna.
Erota myös esitysmuoto kehystyksestä. Socket-luku voi palauttaa vähemmän tavuja kuin pyydettiin. Lue koko kenttä ja tulkitse se sitten SOCKS-version ja osoitetyypin mukaan. SOCKS5-osoitteet voivat sisältää IPv4-osoitteen, IPv6-osoitteen tai pituusetuliitteellisen verkkotunnuksen; kiinteä neljän tavun oletus kattaa vain yhden näistä muodoista.
Negatiiviselta näyttävän oktetin korjaaminen ratkaisee näyttöongelman. Se ei korjaa jäsentäjää, joka alkoi lukea väärästä siirtymästä tai pysähtyi kesken osoitteen.