Codificare le porte SOCKS5 in Go come due byte big-endian
Usate gli helper binary.BigEndian di Go per i campi porta SOCKS5 invece di affettare una stringa binaria a lunghezza variabile.
I campi porta SOCKS5 sono due byte senza segno nell'ordine dei byte di rete: il byte più significativo viene per primo. In Go, codificate direttamente un uint16 già validato:
var field [2]byte
binary.BigEndian.PutUint16(field[:], port)Importate encoding/binary. Per la porta 1080, i byte esadecimali risultanti sono 04 38. Per la porta 4, sono 00 04; lo zero iniziale fa parte del campo a larghezza fissa.
Se l'input inizia come un intero più grande o una stringa, validatene l'intervallo numerico prima di convertirlo in uint16. La conversione può scartare i bit alti invece di segnalare un valore fuori intervallo.
In una risposta SOCKS5, serializzate BND.PORT, il campo porta associata del server. Non copiate la porta di destinazione richiesta in quel campo solo perché entrambe occupano due byte. Collocate il campo codificato dopo l'indirizzo della risposta, la cui lunghezza dipende da ATYP.