Go ରେ SOCKS5 ପୋର୍ଟଗୁଡ଼ିକୁ ଦୁଇଟି ବିଗ୍-ଏଣ୍ଡିଆନ୍ ବାଇଟ୍ ଭାବରେ ଏନକୋଡ୍ କରନ୍ତୁ
ପରିବର୍ତ୍ତନଶୀଳ ଦୈର୍ଘ୍ୟର ବାଇନାରୀ ଷ୍ଟ୍ରିଙ୍ଗ୍ କାଟିବା ପରିବର୍ତ୍ତେ 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 ଉପରେ ନିର୍ଭର କରେ।