Java SOCKS ünvanındakı mənfi ədədlər mənfi IP deyil
SOCKS ünvan sahələrini Java byte API-ləri ilə təhlil edərkən işarəsiz protokol dəyərləri kimi oxuyun.
Java-da byte işarəlidir. Buna görə şəbəkə dəyəri 217 olan oktet birbaşa bayt massivindən çap edildikdə mənfi dəyər kimi görünə bilər. Bu, proksinin etibarsız mənfi IP ünvanı göndərdiyi anlamına gəlmir.
Saxlanan dəyəri işarəsiz tam ədədə çevirin, məsələn Byte.toUnsignedInt(value) ilə, və ya sahəni oxuyarkən DataInputStream.readUnsignedByte() istifadə edin. Şəbəkə sırasındakı port üçün hər iki baytı işarəli onluq ədəd kimi qəbul etmək əvəzinə sənədləşdirilmiş iki baytlıq dəyəri oxuyun.
Təsviri çərçivələmədən də ayırın. Soket oxuması tələb olunandan az bayt qaytara bilər. Sahəni tam oxuyun, sonra SOCKS versiyasına və ünvan növünə görə şərh edin. SOCKS5 ünvanları IPv4 ünvanı, IPv6 ünvanı və ya uzunluq prefiksi olan domen adı ehtiva edə bilər; sabit dörd baytlıq fərziyyə bu formalardan yalnız birini əhatə edir.
Mənfi görünən okteti düzəltmək göstərmə problemini həll edir. Lakin səhv ofsetdən oxumağa başlayan və ya ünvanın ortasında dayanan parseri düzəltmir.