Go хэл дээр SOCKS5 портыг хоёр big-endian байтаар кодлох
Хувьсах урттай хоёртын мөрийг огтлохын оронд SOCKS5 портын талбаруудад Go-ийн binary.BigEndian туслахуудыг ашиглана уу.
SOCKS5 портын талбарууд нь сүлжээний байтын дараалал дахь хоёр тэмдэггүй байт: хамгийн чухал байт эхэнд ирнэ. Go дээр аль хэдийн баталгаажсан uint16-г шууд кодлоно уу:
var field [2]byte
binary.BigEndian.PutUint16(field[:], port)encoding/binary импортлоно уу. 1080 портын хувьд гарсан арван зургаатын байтууд 04 38. 4 портын хувьд тэдгээр нь 00 04; эхний тэг нь тогтмол өргөнтэй талбарын хэсэг юм.
Хэрэв оролт нь илүү том бүхэл тоо эсвэл мөрөөр эхэлбэл uint16 болгон хөрвүүлэхийн өмнө түүний тоон хязгаарыг баталгаажуулна уу. Хөрвүүлэлт нь хязгаараас гадуур утгыг мэдээлэхийн оронд өндөр битүүдийг хаяж болно.
SOCKS5 хариултад BND.PORT-ыг, өөрөөр хэлбэл серверийн холбогдсон портын талбарыг цувралчилна уу. Хоёулаа хоёр байт эзэлдэг гэсэн шалтгаанаар л хүссэн очих портыг тэр талбарт хуулж болохгүй. Кодлогдсон талбарыг хариултын хаягийн дараа байрлуулна уу; түүний урт нь ATYP-аас хамаарна.