SOCKS5 porta lauki ir divi neapzīmēti baiti tīkla baitu secībā: nozīmīgākais baits nāk pirmais. Go kodējiet jau validētu uint16 tieši:

var field [2]byte
binary.BigEndian.PutUint16(field[:], port)

Importējiet encoding/binary. Portam 1080 iegūtie heksadecimālie baiti ir 04 38. Portam 4 tie ir 00 04; sākuma nulle ir daļa no fiksēta platuma lauka.

Ja ievade sākas kā lielāks vesels skaitlis vai virkne, pirms konvertēšanas uz uint16 validējiet tās skaitlisko diapazonu. Konvertēšana var izmest augstos bitus, nevis ziņot par vērtību ārpus diapazona.

SOCKS5 atbildē serializējiet BND.PORT, servera piesaistītā porta lauku. Nekopējiet pieprasīto galamērķa portu šajā laukā tikai tāpēc, ka abi aizņem divus baitus. Ievietojiet kodēto lauku pēc atbildes adreses, kuras garums ir atkarīgs no ATYP.

Saistītie raksti