NetworkStream.DataAvailable == false þýðir að engir bæti eru tilbúnir til að lesa strax. Það þýðir ekki að HTTP-svar sé fullbúið. Lykkja sem stöðvar þar getur stytt eðlilega SOCKS-niðurhal í eyðu milli pakka.

Eftir að SOCKS hefur komið á TCP-tengingunni gefur HTTP-ramminn enn fullnaðarregluna:

  • Content-Length-hlutur endar eftir tilgreindum innihaldsbætum.
  • Chunked-svar þarf lokandi chunk og viðeigandi trailers.
  • Svar sem tengingin afmarkar endar með tengingunni.
  • Sumir stöðukóðar og svör við HEAD hafa engan hlut.

Lestu stöðu og hausa til að ákvarða gildandi reglu. Að bíða eingöngu eftir lokun er ekki almenn lausn, því fullbúið HTTP-svar getur látið tenginguna standa opna. Rýmd eins biðminnis er jafn ótengd lengd svarsins.

Notaðu rammaútfærslu HTTP-biðlarans þegar hún styður valda proxy-flutninginn. Á samhæfðu nútíma .NET-runtime skaltu íhuga innbyggða SOCKS-stuðning HttpClient. Hrá útfærsla verður að varðveita þáttunarstöðu milli hluta hausa og hlutalestrar og greina árangursríka fullnaði frá aflýsingu, tímamörkum og óvæntum EOF. Fyrir lestrarbeyðni sem er ekki tóm þýðir núll lesnir bæti að straumurinn er á enda; það er frábrugðið því að engir bæti séu í biðröðinni akkúrat núna.

Proxy-þjónninn getur gert tímabil sýnileg, en hann breytir ekki tómri móttökubiðröð í merki um enda skilaboða.

Tengdir greinar