Mae NetworkStream.DataAvailable == false yn golygu nad oes beitiau'n barod i'w darllen ar unwaith. Nid yw'n golygu bod ymateb HTTP wedi'i gwblhau. Gall dolen sy'n stopio yno dorri lawrlwythiad SOCKS hollol normal yn ystod bwlch rhwng pecynnau.

Ar ôl i SOCKS sefydlu'r cysylltiad TCP, mae fframio HTTP yn dal i roi'r rheol gwblhau:

  • Mae corff Content-Length yn gorffen ar ôl y beitiau cynnwys a ddatganwyd.
  • Mae angen chunk terfynol a threlars perthnasol ar ymateb chunked.
  • Mae ymateb a ddihysbyddwyd gan y cysylltiad yn gorffen gyda'r cysylltiad.
  • Nid oes gan rai statws ac ymatebion i HEAD gorff.

Darllenwch y statws a'r penawdau i benderfynu ar y rheol berthnasol. Nid yw aros am gau yn unig yn ateb cyffredinol, oherwydd gall ymateb HTTP cyflawn adael y cysylltiad ar agor. Mae capasiti un byffer yr un mor ddigyswllt â hyd yr ymateb.

Defnyddiwch weithrediad fframio'r cleient HTTP pan fydd yn cefnogi'r cludiant procsi a ddewiswyd. Ar runtime .NET modern sy'n gydnaws, ystyriwch gefnogaeth SOCKS brodorol HttpClient. Rhaid i weithrediad crai gadw cyflwr parso ar draws penawdau rhannol a darlleniadau corff a gwahaniaethu rhwng cwblhau llwyddiannus a chanslo, terfyn amser ac EOF annisgwyl. Ar gyfer cais darllen nad yw'n wag, mae darllen sero beit yn golygu bod y ffrwd wedi gorffen; mae hyn yn wahanol i ddim beitiau yn y ciw ar hyn o bryd.

Gall y procsi wneud bylchau amser yn amlwg, ond nid yw'n troi ciw derbyn gwag yn farciwr diwedd neges.

Erthyglau cysylltiedig