SOCKS5 պորտի դաշտերը ցանցային բայթային կարգով երկու աննշան բայթ են. ամենակարևոր բայթը գալիս է առաջինը։ Go-ում ուղղակիորեն կոդավորեք արդեն վավերացված uint16-ը.

var field [2]byte
binary.BigEndian.PutUint16(field[:], port)

Ներմուծեք encoding/binary։ 1080 պորտի համար ստացված տասնվեցական բայթերն են 04 38։ 4 պորտի համար դրանք 00 04 են. սկզբնական զրոն ֆիքսված լայնության դաշտի մասն է։

Եթե մուտքը սկսվում է որպես ավելի մեծ ամբողջ թիվ կամ տող, ապա uint16-ի փոխարկելուց առաջ վավերացրեք դրա թվային միջակայքը։ Փոխարկումը կարող է դեն նետել բարձր բիթերը՝ միջակայքից դուրս արժեք հաղորդելու փոխարեն։

SOCKS5 պատասխանում սերիալիզացրեք BND.PORT-ը՝ սերվերի կապված պորտի դաշտը։ Մի՛ պատճենեք հարցված նպատակակետ պորտը այդ դաշտում միայն այն պատճառով, որ երկուսն էլ զբաղեցնում են երկու բայթ։ Տեղադրեք կոդավորված դաշտը պատասխանի հասցեից հետո, որի երկարությունը կախված է ATYP-ից։

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