Kusimba milango ya SOCKS5 katika Go kama baiti mbili big-endian
Tumia visaidizi vya binary.BigEndian vya Go kwa sehemu za mlango wa SOCKS5 badala ya kukata mfuatano wa binary wenye urefu unaobadilika.
Sehemu za mlango wa SOCKS5 ni baiti mbili zisizo na alama katika mpangilio wa baiti za mtandao: baiti muhimu zaidi huja kwanza. Katika Go, simba uint16 iliyothibitishwa tayari moja kwa moja:
var field [2]byte
binary.BigEndian.PutUint16(field[:], port)Ingiza encoding/binary. Kwa mlango 1080, baiti za heksadesimali zinazotokana ni 04 38. Kwa mlango 4, ni 00 04; sifuri inayoongoza ni sehemu ya sehemu yenye upana maalum.
Ikiwa ingizo huanza kama nambari kamili kubwa au mfuatano, thibitisha masafa yake ya nambari kabla ya kubadilisha kuwa uint16. Ubadilishaji unaweza kutupa biti za juu badala ya kuripoti thamani iliyo nje ya masafa.
Katika jibu la SOCKS5, fanya mfululizo wa BND.PORT, sehemu ya mlango iliyofungwa ya seva. Usinakili mlango wa lengo ulioombwa kwenye sehemu hiyo kwa sababu tu zote mbili zinachukua baiti mbili. Weka sehemu iliyosimbwa baada ya anwani ya jibu, ambayo urefu wake unategemea ATYP.