SOCKS5 պորտերի կոդավորումը Go-ում որպես երկու big-endian բայթ
SOCKS5 պորտի դաշտերի համար օգտագործեք Go-ի binary.BigEndian օժանդակները՝ փոփոխական երկարության երկուական տող կտրելու փոխարեն։
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-ից։