Python SOCKS කියවීමේ ලූපයේ EOF හසුරුවන්න
වසා ඇති සම්බන්ධතාවය කිසිදා නොපැමිණෙන කාල සීමාවක් ලෙස සැලකීම වෙනුවට SOCKS නිවැරදි-කියවීමේ ලූපයේ EOF පැහැදිලිව හසුරුවන්න.
ලූපයකට SOCKS පිළිතුරේ බයිට් අටක් අවශ්යය. එයට තුනක් ලැබී ඇත. ඊළඟ කියවීම b'' ලබා දෙයි, ලූපය එය එකතු කර, දිග පරීක්ෂා කර, සදාකාලිකව නැවත උත්සාහ කරයි.
මෙය EOF හැසිරවීමේ දෝෂයකි, දිගු කාල සීමාවක් අවශ්ය මන්දගාමී ප්රොක්සියක් නොවේ. සාමාන්ය ස්ට්රීම්-සොකට් ලැබීමකදී, හිස් බයිට් තන්තුවක් යනු අනෙක් පාර්ශ්වය විසන්ධි වී ඇති බවයි. ඉතිරි බයිට් පහ එම සම්බන්ධතාවයෙන් නොපැමිණේ.
නිවැරදි-කියවීමේ සහායකයාට වෙනස් ප්රතිඵල තුනක් අවශ්යය: හිස් නොවන කොටස් එකතු කිරීම, අවශ්ය දිගට පෙර EOF හි අසාර්ථක වීම, සහ කාල සීමාවක් හෝ වෙනත් සොකට් දෝෂයක් ඉදිරියට යැවීම. එම අවස්ථා එක් සාමාන්ය නැවත-උත්සාහ ලූපයකට ඒකාබද්ධ නොවිය යුතුය.
ක්රියාවට පෙර සොකට්ටයේ අපේක්ෂිත කාල සීමාව සකසන්න, සහ ප්රොක්සි ප්රොටෝකෝලය විසින් නිර්දේශිත ක්ෂේත්ර දිග කියවන්න. එක් ලැබීමකට පිළිතුරේ කොටසක් පමණක් ලබා දිය හැක. ඊට වෙනස්ව, විශාල ස්ථිර බෆරයක් ඉල්ලීමෙන් සෑම SOCKS ලිපිනයක්ම එම දිග බවට නොපත් වේ.
පැරණි MSG_WAITALL ස්නිපටය එහි මූලාශ්රයට අලවා එය EOF, සංඥා සහ වේදිකා හැසිරීම ආවරණය කරන බව උපකල්පනය කර යැපීම අලුත්වැඩියා නොකරන්න. නඩත්තු කරන ලද ක්රියාත්මක කිරීමේ සහාය දක්වන නිවැරදි කිරීමට මුල් තැන දෙන්න, නැතහොත් විග්රහකය ඔබේ කේතය නම් සහායකයාගේ ගිවිසුම හිතාමතා ක්රියාත්මක කරන්න.
බයිට් කීපයක් අපේක්ෂා කරන ලද්දේද ලැබුණේද යන්න තබා ගන්න, අක්තපත්ර පේලෝඩ ලොග් නොකර. “පිළිතුරු බයිට් අටෙන් තුනකට පසු EOF” කැඩුණු හුවමාරුව “ප්රොක්සිය නැවත සිරවුණි” යැයි කීමට වඩා බෙහෙවින් හොඳින් පැහැදිලි කරයි.