NetworkStream.DataAvailable == false پدې معنی چې د سملاسي لوستلو لپاره هېڅ بایټ چمتو نه دی. دا پدې معنی نه ده چې HTTP ځواب بشپړ شوی. هغه لوپ چې هلته ودروي کولای شي د پیکټونو ترمنځ وقفې په جریان کې یو بشپړ نورمال SOCKS ډاونلوډ پرې کړي.

وروسته له دې چې SOCKS د TCP اړیکه جوړه کړه، د بشپړیدو قاعده لا هم د HTTP چوکاټ لخوا ورکول کیږي:

  • د Content-Length جسم د اعلان شوي منځپانګې بایټونو وروسته پای ته رسیږي.
  • chunked ځواب خپل پای chunk او اړوند trailer ته اړتیا لري.
  • د اړیکې په واسطه محدود ځواب د اړیکې سره پای ته رسیږي.
  • ځینې حالتونه او HEAD ته ځوابونه جسم نه لري.

د پلي کیدونکې قاعدې ټاکلو لپاره حالت او سرلیکونه ولولئ. یوازې د بندیدو انتظار کول عمومي حل نه دی، ځکه چې بشپړ HTTP ځواب کولای شي اړیکه پرانیستې پریږدي. د یو بفر ظرفیت هم د ځواب اوږدوالی سره په ورته ډول تړاو نه لري.

د HTTP کارونکي چوکاټ پلي کول وکاروئ کله چې دا د ټاکل شوي پروکسي انتقال ملاتړ کوي. په مطابقت لرونکي عصري .NET رنټایم کې د HttpClient اصلي SOCKS ملاتړ په پام کې ونیسئ. خام پلي کول باید د جزوي سرلیکونو او جسم لوستلو په اوږدو کې د تحلیل حالت وساتي او بریالۍ بشپړیدنه د لغوه کیدو، وخت ختمیدو او غیر متوقع EOF څخه جلا کړي. په غیر خالي لوستلو غوښتنه کې صفر لوستل شوي بایټ پدې معنی چې جریان پای ته رسیدلی؛ دا د دې څخه توپیر لري چې اوس مهال په قطار کې هېڅ بایټ نشته.

پروکسي کولای شي د وخت وقفې ښکاره کړي، مګر دا خالي ترلاسه کولو قطار د پیغام د پای نښې ته نه بدلوي.

اړوندې مقالې