NetworkStream.DataAvailable haionyeshi mwisho wa jibu la HTTP
Zuia upakuaji wa HTTP uliokatwa kwa kutumia uwekaji fremu wa ujumbe badala ya NetworkStream.DataAvailable kama sharti la mwisho.
NetworkStream.DataAvailable == false humaanisha kuwa hakuna baiti zilizo tayari kusomwa papo hapo. Haimaanishi kuwa jibu la HTTP limekamilika. Mzunguko unaosimama hapo unaweza kukata upakuaji wa SOCKS wa kawaida kabisa wakati wa pengo kati ya pakiti.
Baada ya SOCKS kuanzisha muunganisho wa TCP, uwekaji fremu wa HTTP bado hutoa kanuni ya ukamilifu:
- Mwili wenye Content-Length huisha baada ya baiti za maudhui zilizotangazwa.
- Jibu la chunked linahitaji chunk yake ya mwisho na trailer zinazohusika.
- Jibu lililowekewa kikomo na muunganisho huisha pamoja na muunganisho.
- Baadhi ya hali na majibu kwa HEAD hayana mwili.
Soma hali na vichwa ili kubainisha kanuni inayotumika. Kusubiri kufungwa pekee si suluhisho la jumla, kwa sababu jibu kamili la HTTP linaweza kuacha muunganisho wazi. Uwezo wa buffer moja pia hauhusiani na urefu wa jibu.
Tumia utekelezaji wa uwekaji fremu wa mteja wa HTTP wakati unakubali usafirishaji wa proksi uliochaguliwa. Kwenye runtime ya kisasa ya .NET inayolingana, fikiria msaada asilia wa SOCKS wa HttpClient. Utekelezaji mbichi lazima uhifadhi hali ya uchanganuzi kuvuka vichwa vya sehemu na usomaji wa mwili, na kutofautisha ukamilifu uliofanikiwa na kughairi, kuisha muda na EOF isiyotarajiwa. Katika ombi la kusoma lisilo tupu, baiti sifuri zilizosomwa humaanisha kuwa mtiririko umeisha; hii ni tofauti na kutokuwa na baiti kwenye foleni kwa sasa hivi.
Proksi inaweza kufanya mapengo ya muda yaonekane, lakini haibadilishi foleni tupu ya upokeaji kuwa alama ya mwisho wa ujumbe.