NetworkStream.DataAvailable == false do të thotë se nuk ka bajt të gatshëm për lexim të menjëhershëm. Nuk do të thotë se një përgjigje HTTP është e plotë. Një cikël që ndalon atje mund të presë një shkarkim SOCKS krejt normal gjatë një hendeku midis paketave.

Pasi SOCKS vendos lidhjen TCP, kornizimi HTTP vazhdon të japë rregullin e përfundimit:

  • Një trup me Content-Length përfundon pas bajtëve të përmbajtjes të deklaruar.
  • Një përgjigje chunked kërkon chunk-un përfundimtar dhe trailers të zbatueshme.
  • Një përgjigje e kufizuar nga lidhja përfundon me lidhjen.
  • Disa statuse dhe përgjigje ndaj HEAD nuk kanë trup.

Lexoni statusin dhe titujt për të përcaktuar rregullin e zbatueshëm. Të presësh vetëm mbylljen nuk është zgjidhje e përgjithshme, sepse një përgjigje HTTP e plotë mund ta lërë lidhjen të hapur. Kapaciteti i një buferi është po aq i palidhur me gjatësinë e përgjigjes.

Përdorni zbatimin e kornizimit të klientit HTTP kur ai mbështet transportin e zgjedhur përmes proxy. Në një runtime .NET modern të përputhshëm, konsideroni mbështetjen vendase të SOCKS në HttpClient. Një zbatim i papërpunuar duhet të ruajë gjendjen e analizimit përgjatë titujve të pjesshëm dhe leximeve të trupit, dhe të dallojë përfundimin e suksesshëm nga anulimi, skadimi i kohës dhe EOF i papritur. Në një kërkesë leximi jo bosh, zero bajt të lexuar do të thotë që rrjedha ka mbaruar; kjo ndryshon nga mospasja e bajtëve në radhë në këtë moment.

Proxy mund t'i bëjë të dukshme hendeket kohore, por nuk e kthen një radhë pritjeje bosh në shenjë fundi të mesazhit.

Artikuj të ngjashëm