SOCKS5-portok kódolása Go-ban két big-endian bájtként
Használja a Go binary.BigEndian segédfüggvényeit a SOCKS5-portmezőkhöz a változó hosszúságú bináris sztring feldarabolása helyett.
A SOCKS5-portmezők két előjel nélküli bájt hálózati bájtsorrendben: a legjelentősebb bájt jön először. Go-ban közvetlenül kódoljon egy már érvényesített uint16-ot:
var field [2]byte
binary.BigEndian.PutUint16(field[:], port)Importálja az encoding/binary csomagot. Az 1080-as port esetében a kapott hexadecimális bájtok 04 38. A 4-es port esetében 00 04; a vezető nulla a rögzített szélességű mező része.
Ha a bemenet nagyobb egészként vagy sztringként indul, érvényesítse a numerikus tartományát, mielőtt uint16-ra konvertálja. A konvertálás eldobhatja a magas biteket ahelyett, hogy tartományon kívüli értéket jelentene.
Egy SOCKS5-válaszban szerializálja a BND.PORT-ot, a kiszolgáló kötött portmezőjét. Ne másolja a kért célportot abba a mezőbe csak azért, mert mindkettő két bájtot foglal el. A kódolt mezőt a válasz címe után helyezze el, amelynek hossza az ATYP-tól függ.