SOCKS5-Porten a Go als zwee Big-Endian-Byten kodéieren
Benotzt d'Go binary.BigEndian-Hëllefsfunktiounen fir SOCKS5-Portfelder amplaz eng binär Zeecheketten mat variabler Längt ze schneiden.
SOCKS5-Portfelder sinn zwee Virzeechenlos Byten an der Netzwerk-Byte-Uerdnung: dat héchstwuert Byten kënnt als éischt. A Go kodéiert een en already validéierten uint16 direkt:
var field [2]byte
binary.BigEndian.PutUint16(field[:], port)Importéiert encoding/binary. Fir Port 1080 sinn déi entstoe Hexadezimalbyten 04 38. Fir Port 4 sinn et 00 04; eng féierend Null gehéiert zum Feld mat fester Breet.
Wann d'Input als eng méi grouss Ganzzuel oder als Zeecheketten ufänkt, validéiert hiren numeresche Beräich, ier dir se an uint16 ëmwandelt. D'Ëmwandlung kann héich Bits verwerfen, amplaz eng Wäert baussen dem Beräich ze mellen.
An enger SOCKS5-Äntwert serialiséiert BND.PORT, de gebonnenen Portfeld vum Server. Kopéiert net de gefrotten Destinatiounsport an dee Feld just well béid zwee Byten huelen. Setzt de kodéierte Feld no der Adress vun der Äntwert, där hir Längt vun ATYP ofhänkt.