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

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

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

Ako ulaz počinje kao veći cijeli broj ili niz znakova, validirajte njegov numerički raspon prije pretvorbe u uint16. Pretvorba može odbaciti visoke bitove umjesto da prijavi vrijednost izvan raspona.

U SOCKS5 odgovoru serijalizirajte BND.PORT, polje vezanog porta poslužitelja. Ne kopirajte traženi odredišni port u to polje samo zato što oba zauzimaju dva bajta. Postavite kodirano polje nakon adrese odgovora, čija duljina ovisi o ATYP-u.

Povezani članci