Negatiivsed arvud Java SOCKS-aadressis ei ole negatiivsed IP-d
Lugege SOCKS-aadressi välju allkirjata protokolli väärtustena, kui parsite neid Java byte API-dega.
Javas on byte märgiga. Seetõttu võib oktett, mille juhtmeväärtus on 217, byte-massiivist otse trükkides paista negatiivse väärtusena. See ei tähenda, et puhverserver saatis kehtetu negatiivse IP-aadressi.
Teisendage salvestatud väärtus allkirjata täisarvuks, näiteks Byte.toUnsignedInt(value) abil, või kasutage välja lugemisel DataInputStream.readUnsignedByte(). Võrgu järjekorras pordi puhul lugege dokumenteeritud kahe baidi väärtust, mitte ärge käsitlege kumbagi baiti märgiga kümnendarvuna.
Eraldage ka esitus raamimisest. Soketi lugemine võib tagastada vähem baite kui nõutud. Lugege väli tervikuna ja tõlgendage seda seejärel SOCKS-i versiooni ja aadressitüübi järgi. SOCKS5-aadressid võivad sisaldada IPv4-aadressi, IPv6-aadressi või pikkuse eesliitega domeeninime; fikseeritud nelja baidi eeldus katab neist vormidest ainult ühe.
Negatiivsena paistva okteti parandamine lahendab kuvamisprobleemi. See ei paranda parserit, mis alustas lugemist valest nihkest või peatus aadressi keskel.