Kódovanie SOCKS5 portov v Go ako dvoch bajtov big-endian
Pre polia portu SOCKS5 používajte pomocníkov binary.BigEndian v Go namiesto krájania binárneho reťazca premennej dĺžky.
Polia portu SOCKS5 sú dva bajty bez znamienka v sieťovom poradí bajtov: najvýznamnejší bajt je prvý. V Go zakódujte už overený uint16 priamo:
var field [2]byte
binary.BigEndian.PutUint16(field[:], port)Importujte encoding/binary. Pre port 1080 sú výsledné hexadecimálne bajty 04 38. Pre port 4 sú to 00 04; úvodná nula je súčasťou poľa s pevnou šírkou.
Ak vstup začína ako väčšie celé číslo alebo reťazec, overte jeho číselný rozsah pred prevodom na uint16. Prevod môže zahodiť vysoké bity namiesto toho, aby ohlásil hodnotu mimo rozsahu.
V odpovedi SOCKS5 serializujte BND.PORT, pole pripojeného portu servera. Nekopírujte požadovaný cieľový port do tohto poľa len preto, že oba zaberajú dva bajty. Zakódované pole umiestnite za adresu odpovede, ktorej dĺžka závisí od ATYP.