ຈັດການ EOF ໃນລູບການອ່ານ SOCKS ຂອງ Python
ຈັດການ EOF ຢ່າງຊັດເຈນໃນລູບການອ່ານທີ່ແນ່ນອນ SOCKS ແທນທີ່ຈະຖືການເຊື່ອມຕໍ່ທີ່ປິດເປັນເວລາລໍຖ້າທີ່ບໍ່ເຄີຍມາ.
ລູບໜຶ່ງຕ້ອງການແປດໄບຕ໌ຂອງການຕອບສະໜອງ SOCKS. ມັນໄດ້ຮັບສາມແລ້ວ. ການອ່ານຕໍ່ໄປສົ່ງຄືນ b'', ລູບກໍ່ເພີ່ມມັນ, ກວດຄວາມຍາວ, ແລະລອງໃໝ່ຢ່າງບໍ່ມີທີ່ສິ້ນສຸດ.
ນີ້ແມ່ນຂໍ້ຜິດພາດໃນການຈັດການ EOF, ບໍ່ແມ່ນພຣັອກຊີຊ້າທີ່ຕ້ອງການເວລາລໍຖ້າດົນກວ່າ. ໃນການຮັບຜ່ານສະກັດສະຕຣີມປົກກະຕິ, ສາຍໄບຕ໌ຫວ່າງເປົ່າໝາຍຄວາມວ່າຄູ່ຮ່ວມໄດ້ຕັດການເຊື່ອມຕໍ່. ຫ້າໄບຕ໌ທີ່ເຫຼືອຈະບໍ່ມາຕາມການເຊື່ອມຕໍ່ນັ້ນ.
ຕົວຊ່ວຍການອ່ານທີ່ແນ່ນອນຕ້ອງການຜົນລັບສາມຢ່າງ: ລວບລວມສ່ວນທີ່ບໍ່ຫວ່າງເປົ່າ, ລົ້ມເຫຼວທີ່ EOF ກ່ອນຄວາມຍາວທີ່ຕ້ອງການ, ແລະສົ່ງຕໍ່ເວລາລໍຖ້າຫຼືຂໍ້ຜິດພາດສະກັດອື່ນ. ກໍລະນີເຫຼົ່ານັ້ນບໍ່ຄວນລວມເຂົ້າກັນໃນລູບລອງໃໝ່ທົ່ວໄປອັນດຽວ.
ຕັ້ງເວລາລໍຖ້າທີ່ຕັ້ງໃຈຂອງສະກັດກ່ອນການດຳເນີນການ, ແລະອ່ານຄວາມຍາວຂອງຊ່ອງຂໍ້ມູນທີ່ພິເສດໂດຍໂປຣໂຕຄອນພຣັອກຊີ. ການຮັບຄັ້ງດຽວສາມາດສົ່ງຄືນພຽງສ່ວນໜຶ່ງຂອງການຕອບສະໜອງ. ກົງກັນຂ້າມ, ການຂໍບັຟເຟີຄົງທີ່ຂະໜາດໃຫຍ່ບໍ່ໄດ້ເຮັດໃຫ້ທຸກທີ່ຢູ່ SOCKS ມີຄວາມຍາວນັ້ນ.
ຢ່າຊ່ອມແປງການເພິ່ງພາອາໄສໂດຍການວາງສະນິບເປັດ MSG_WAITALL ເກົ່າເຂົ້າໃນແຫຼ່ງຂອງມັນ ແລະຖືວ່າມັນກວມ EOF, ສັນຍານ ແລະພຶດຕິກຳເວທີ. ເລືອກການແກ້ໄຂທີ່ຮອງຮັບຂອງການຈັດຕັ້ງທີ່ບຳລຸງຮັກສາ, ຫຼືຈັດຕັ້ງສັນຍາຂອງຕົວຊ່ວຍຢ່າງເຈດຕະນາເມື່ອຕົວແຍກເປັນໂຄ້ດຂອງທ່ານ.
ເກັບຈຳນວນໄບຕ໌ທີ່ຄາດຫວັງ ແລະໄດ້ຮັບ, ໂດຍບໍ່ບັນທຶກຂໍ້ມູນຢືນຢັນຕົວຕົນ. «EOF ຫຼັງຈາກສາມໃນແປດໄບຕ໌ຕອບສະໜອງ» ອະທິບາຍການແລກປ່ຽນທີ່ເສຍຫາຍໄດ້ດີກວ່າ «ພຣັອກຊີຄ້າງອີກ».