SOCKS5 port maydonlari tarmoq bayt tartibida ikkita ishorasiz baytdir: eng muhim bayt birinchi keladi. Go-da allaqachon tekshirilgan uint16-ni toʻgʻridan-toʻgʻri kodlang:

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

encoding/binary import qiling. 1080-port uchun hosil boʻlgan oʻn oltilik baytlar 04 38. 4-port uchun ular 00 04; boshidagi nol qatʼiy kenglikdagi maydonning bir qismidir.

Agar kirish kattaroq butun son yoki satr sifatida boshlansa, uint16-ga aylantirishdan oldin uning raqamli diapazonini tekshiring. Aylantirish diapazondan tashqari qiymat haqida xabar berish oʻrniga yuqori bitlarni tashlab yuborishi mumkin.

SOCKS5 javobida BND.PORT-ni, yaʼni serverning bogʻlangan port maydonini seriyalashtiring. Ikkalasi ham ikki bayt egallagani uchungina soʻralgan manzil portini oʻsha maydonga koʻchirmang. Kodlangan maydonni javob manzilidan keyin joylashtiring; uning uzunligi ATYP-ga bogʻliq.

O'xshash maqolalar