ຟິວພອດ 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.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ