በPython SOCKS የንባብ ዑደት ውስጥ EOFን ያስተናግዱ
የተዘጋውን ግንኙነት በጭራሽ የማይመጣ ጊዜ ማለቂያ አድርጎ ከመቁጠር ይልቅ EOFን በSOCKS ትክክለኛ የንባብ ዑደት ውስጥ በግልጽ ያስተናግዱ።
አንድ ዑደት ከSOCKS ምላሽ ስምንት ባይቶችን ይፈልጋል። ሶስት ተቀብሏል። የሚቀጥለው ንባብ b'' ይመልሳል፣ ዑደቱም ይጨምረዋል፣ ርዝመቱን ያረጋግጣል፣ እና ለዘላለም እንደገና ይሞክራል።
ይህ የEOF አያያዝ ስህተት ነው፣ ረዘም ያለ ጊዜ ማለቂያ የሚፈልግ ቀርፋፋ ፕሮክሲ አይደለም። ለመደበኛ የጅረት-ሶኬት መቀበያ፣ ባዶ የባይት ሕብረቁምፊ ማለት ተጓዳኙ ተቋርጧል ማለት ነው። ቀሪዎቹ አምስት ባይቶች በዚያ ግንኙነት ላይ አይደርሱም።
ትክክለኛ የንባብ አጋዥ ሶስት የተለያዩ ውጤቶችን ይፈልጋል፦ ባዶ ያልሆኑ ቁርጥራጮችን መሰብሰብ፣ ከሚያስፈልገው ርዝመት በፊት በEOF ላይ መውደቅ፣ እና ጊዜ ማለቂያ ወይም ሌላ የሶኬት ስህተት ማስተላለፍ። እነዚህ ጉዳዮች ወደ አንድ አጠቃላይ የድግግሞሽ ዑደት መውረድ የለባቸውም።
ከስራው በፊት የሶኬቱን የታሰበ ጊዜ ማለቂያ ያዘጋጁ፣ እና በፕሮክሲ ፕሮቶኮል የተገለጹትን የመስክ ርዝመቶች ያንብቡ። አንድ ነጠላ መቀበያ የምላሹን ክፍል ብቻ ሊመልስ ይችላል። በተቃራኒው፣ ትልቅ ቋሚ ቋት መጠየቅ እያንዳንዱ SOCKS አድራሻ ያንን ርዝመት እንዲኖረው አያደርግም።
ጥገኝነትን አሮጌ MSG_WAITALL ቅንጣት በምንጩ ውስጥ በመለጠፍ እና EOFን፣ ምልክቶችን እና የመድረክ ባህሪን ይሸፍናል ብለው በማሰብ አይጠግኑ። የተጠበቀውን ትግበራ የሚደገፈውን መፍትሄ ይመርጡ፣ ወይም ተንታኙ የእርስዎ ኮድ ከሆነ የአጋዥውን ውል ሆን ብለው ይተግብሩ።
ምን ያህል ባይቶች እንደተጠበቁ እና እንደተቀበሉ ይያዙ፣ የምስክር ማድረጊያ ጭነትን ሳይመዘግቡ። “ከስምንቱ የምላሽ ባይቶች ከሶስቱ በኋላ EOF” የተበላሸውን ልውውጥ ከ“ፕሮክሲው እንደገና ተንጠልጥሏል” በጣም በተሻለ ያብራራል።