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.

Kapcsolódó cikkek