Java-ում byte նշանով է։ Հետևաբար, 217 ցանցային արժեք ունեցող օկտետը byte զանգվածից ուղիղ տպելիս կարող է երևալ որպես բացասական արժեք։ Դա չի նշանակում, որ վստահված անձը ուղարկել է անվավեր բացասական IP հասցե։

Պահված արժեքը փոխարկեք աննշան ամբողջ թվի, օրինակ՝ Byte.toUnsignedInt(value)-ով, կամ դաշտը կարդալիս օգտագործեք DataInputStream.readUnsignedByte()։ Ցանցային կարգի պորտի համար կարդացեք փաստաթղթավորված երկու byte-անոց արժեքը, փոխարենը byte-երից որևէ մեկը նշանով տասնորդական թիվ համարելու։

Առանձնացրեք նաև ներկայացումը շրջանակավորումից։ Սոկետի ընթերցումը կարող է վերադարձնել ավելի քիչ byte, քան պահանջվել է։ Կարդացեք ամբողջ դաշտը, ապա մեկնաբանեք այն ըստ SOCKS տարբերակի և հասցեի տեսակի։ SOCKS5 հասցեները կարող են պարունակել IPv4 հասցե, IPv6 հասցե կամ երկարության նախածանցով դոմենի անուն. չորս byte-ի ֆիքսված ենթադրությունը ծածկում է այդ ձևերից միայն մեկը։

Բացասական թվացող օկտետի ուղղումը լուծում է ցուցադրման խնդիրը։ Այն չի շտկում վերլուծիչը, որը սկսել է կարդալ սխալ դիրքից կամ կանգ է առել հասցեի կեսին։

Առնչվող հոդվածներ