Polja SOCKS5 porta su dva neoznačena bajta u mrežnom redosledu bajtova: najznačajniji bajt dolazi prvi. U Gou kodirajte već validiran uint16 direktno:

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

Uvezite encoding/binary. Za port 1080 rezultujući heksadecimalni bajtovi su 04 38. Za port 4 oni su 00 04; vodeća nula je deo polja fiksne širine.

Ako ulaz počinje kao veći ceo broj ili niz znakova, validirajte njegov numerički raspon pre pretvaranja u uint16. Pretvaranje može odbaciti visoke bitove umesto da prijavi vrednost izvan raspona.

U SOCKS5 odgovoru serijalizujte BND.PORT, polje vezanog porta servera. Ne kopirajte traženi odredišni port u to polje samo zato što oba zauzimaju dva bajta. Postavite kodirano polje nakon adrese odgovora, čija dužina zavisi od ATYP-a.

Povezani članci