Негативни бројеви у Java SOCKS адреси нису негативне IP адресе
Читајте поља SOCKS адресе као неозначене протоколарне вредности када их парсирате Java byte API-јима.
У Javi је byte означен. Зато се октет чија је мрежна вредност 217 може приказати као негативна вредност када се испише директно из низа бајтова. То не значи да је прокси послао неважећу негативну IP адресу.
Претворите сачувану вредност у неозначен цео број, на пример помоћу Byte.toUnsignedInt(value), или користите DataInputStream.readUnsignedByte() док читате поље. За порт у мрежном редоследу прочитајте документовану двобајтну вредност уместо да било који бајт третирате као означени децимални број.
Одвојите и приказ од уоквиривања. Читање са сокета може вратити мање бајтова од затраженог. Прочитајте цело поље, па га протумачите према верзији SOCKS-а и типу адресе. SOCKS5 адресе могу садржати IPv4 адресу, IPv6 адресу или име домена са префиксом дужине; фиксна претпоставка од четири бајта покрива само један од тих облика.
Исправљање октета који изгледа негативно решава проблем приказа. Не исправља парсер који је почео да чита са погрешног помераја или стао на пола адресе.