ເຂົ້າລະຫັດພອດ SOCKS5 ໃນ Go ເປັນສອງໄບຕ໌ big-endian
ໃຊ້ຕົວຊ່ວຍ binary.BigEndian ຂອງ Go ສຳລັບຟິວພອດ SOCKS5 ແທນການຕັດສະຕຣິງໄບນາຣີທີ່ມີຄວາມຍາວປ່ຽນແປງ.
ຟິວພອດ 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.