Kodiranje vrat SOCKS5 v Go kot dva bajta big-endian
Za polja vrat SOCKS5 uporabite pomočnike binary.BigEndian v Go, namesto da režete binarni niz spremenljive dolžine.
Polja vrat SOCKS5 sta dva nepredznačena bajta v omrežnem vrstnem redu bajtov: najpomembnejši bajt je prvi. V Go kodirajte že preverjeni uint16 neposredno:
var field [2]byte
binary.BigEndian.PutUint16(field[:], port)Uvozite encoding/binary. Za vrata 1080 so dobljeni šestnajstiški bajti 04 38. Za vrata 4 so 00 04; vodilna ničla je del polja s fiksno širino.
Če se vnos začne kot večje celo število ali niz, preden ga pretvorite v uint16, preverite njegov številčni razpon. Pretvorba lahko zavrže visoke bite, namesto da bi sporočila vrednost zunaj razpona.
V odgovoru SOCKS5 serializirajte BND.PORT, polje vezanih vrat strežnika. Zahtevanih ciljnih vrat ne kopirajte v to polje samo zato, ker oba zasedata dva bajta. Kodirano polje postavite za naslovom odgovora, katerega dolžina je odvisna od ATYP.