A negatív számok egy Java SOCKS-címben nem negatív IP-címek
A SOCKS-cím mezőit előjel nélküli protokollértékként olvassa, amikor Java byte API-kkal dolgozza fel őket.
A Java-ban a byte előjeles. Ezért egy 217-es átviteli értékű oktett negatív értékként jelenhet meg, ha közvetlenül egy byte-tömbből írjuk ki. Ez nem jelenti azt, hogy a proxy érvénytelen negatív IP-címet küldött.
Alakítsa a tárolt értéket előjel nélküli egésszé, például a Byte.toUnsignedInt(value) használatával, vagy használja a DataInputStream.readUnsignedByte() metódust a mező olvasásakor. Hálózati sorrendű port esetén a dokumentált kétbájtos értéket olvassa, ne kezelje a bájtok egyikét sem előjeles tizedes számként.
Válassza szét a megjelenítést a keretezéstől is. Egy socket-olvasás kevesebb bájtot adhat vissza a kértnél. Olvassa be a teljes mezőt, majd értelmezze a SOCKS verziója és a cím típusa szerint. A SOCKS5-címek IPv4-címet, IPv6-címet vagy hosszelőtaggal ellátott tartománynevet tartalmazhatnak; a rögzített négybájtos feltevés csak ezek egyikét fedi le.
A negatívnak látszó oktett kijavítása megoldja a megjelenítési problémát. Nem javítja viszont azt az elemzőt, amely rossz eltolásnál kezdett olvasni, vagy félúton megállt a címben.