Kodimi i porteve SOCKS5 në Go si dy bajt big-endian
Përdorni ndihmësat binary.BigEndian të Go për fushat e portës SOCKS5 në vend që të prisni një varg binar me gjatësi të ndryshueshme.
Fushat e portës SOCKS5 janë dy bajt pa shenjë në rendin e bajteve të rrjetit: bajti më domethënës vjen i pari. Në Go, kodoni drejtpërdrejt një uint16 të vërtetuar tashmë:
var field [2]byte
binary.BigEndian.PutUint16(field[:], port)Importoni encoding/binary. Për portën 1080, bajtët heksadecimalë që rezultojnë janë 04 38. Për portën 4, ata janë 00 04; zeroja fillestare është pjesë e fushës me gjerësi fikse.
Nëse hyrja fillon si një numër i plotë më i madh ose një varg, vërtetoni diapazonin e tij numerik përpara se ta konvertoni në uint16. Konvertimi mund të hedhë poshtë bitet e larta në vend që të raportojë një vlerë jashtë diapazonit.
Në një përgjigje SOCKS5, serializoni BND.PORT, fushën e portës së lidhur të serverit. Mos e kopjoni portën e destinacionit të kërkuar në atë fushë vetëm sepse të dyja zënë dy bajt. Vendosni fushën e koduar pas adresës së përgjigjes, gjatësia e së cilës varet nga ATYP.