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.

Artikuj të ngjashëm