En Java byte estas signa. Oktejo kun drata valoro 217 povas do aperi kiel negativa valoro kiam ĝi estas presita rekte el bajta tabelo. Tio ne signifas, ke la prokuro sendis malvalidan negativan IP-adreson.

Konvertu la konservitan valoron al sensigna entjero, ekzemple per Byte.toUnsignedInt(value), aŭ uzu DataInputStream.readUnsignedByte() dum vi legas la kampon. Por pordo en reta ordo, legu la dokumentitan du-bajtan valoron anstataŭ trakti ajnan el la bajtoj kiel signan dekuman nombron.

Ankaŭ apartigu prezenton de enkadrigo. Legado el ingo povas redoni malpli da bajtoj ol petitaj. Legu la tutan kampon, poste interpretu ĝin laŭ la versio de SOCKS kaj la tipo de adreso. SOCKS5-adresoj povas enhavi IPv4-adreson, IPv6-adreson aŭ domajnan nomon kun longa prefikso; fiksa supozo de kvar bajtoj kovras nur unu el tiuj formoj.

Korekti oktejon, kiu aspektas negativa, solvas la montran problemon. Ĝi ne riparas analizilon, kiu komencis legi ĉe malĝusta deŝovo aŭ haltis duonvoje tra la adreso.

Rilataj artikoloj