SOCKS5 portlarını Go-da iki böyük-endian bayt kimi kodlayın
Dəyişən uzunluqlu ikili sətri kəsmək əvəzinə SOCKS5 port sahələri üçün Go-nun binary.BigEndian köməkçilərindən istifadə edin.
SOCKS5 port sahələri şəbəkə bayt sırasında iki işarəsiz baytdır: ən əhəmiyyətli bayt birinci gəlir. Go-da artıq yoxlanılmış uint16-nı birbaşa kodlayın:
var field [2]byte
binary.BigEndian.PutUint16(field[:], port)encoding/binary import edin. 1080 portu üçün nəticədə alınan onaltılıq baytlar 04 38-dir. 4 portu üçün isə 00 04-dir; baştaki sıfır sabit enli sahənin bir hissəsidir.
Giriş daha böyük tam ədəd və ya sətir kimi başlayırsa, uint16-ya çevirməzdən əvvəl onun ədədi diapazonunu yoxlayın. Çevirmə diapazondan kənar dəyəri bildirmək əvəzinə yüksək bitləri ata bilər.
SOCKS5 cavabında BND.PORT sahəsini, yəni serverin bağlanmış port sahəsini serializasiya edin. Hər ikisi iki bayt tutduğu üçün tələb olunan təyinat portunu o sahəyə köçürməyin. Kodlanmış sahəni cavabın ünvanından sonra yerləşdirin; onun uzunluğu ATYP-dən asılıdır.