NetworkStream.DataAvailable == false dərhal oxumaq üçün hazır bayt olmadığını bildirir. Bu, HTTP cavabının tamamlandığı anlamına gəlmir. Burada dayanan dövrə paketlər arasındakı fasilə zamanı tamamilə normal SOCKS yükləməsini kəsə bilər.

SOCKS TCP bağlantısını qurduqdan sonra da tamamlanma qaydasını HTTP çərçivələməsi verir:

  • Content-Length gövdəsi elan edilmiş məzmun baytlarından sonra bitir.
  • Chunked cavab üçün onun bitirici chunk-u və tətbiq olunan trailer-lər tələb olunur.
  • Bağlantı ilə müyəyyən edilən cavab bağlantı ilə birlikdə bitir.
  • Bəzi statusların və HEAD üçün cavabların gövdəsi yoxdur.

Tətbiq olunan qaydanı müyəyyən etmək üçün statusu və başlıqları oxuyun. Yalnız bağlanmanı gözləmək ümumi həll deyil, çünki tam HTTP cavabı bağlantını açıq saxlaya bilər. Bir buferin tutumu da cavabın uzunluğu ilə eyni dərəcədə əlaqəsizdir.

HTTP müştərisinin çərçivələmə tətbiqindən seçilmiş proxy nəqliyyatını dəstəklədiyi halda istifadə edin. Uyğun müasir .NET işləmə mühitində HttpClient-in daxili SOCKS dəstəyini nəzərdən keçirin. Xam tətbiq qismən başlıqlar və gövdə oxunuşları boyunca parse vəziyyətini saxlamalı və uğurlu tamamlanmanı ləğv etmədən, taym-autdan və gözlənilməz EOF-dan ayırmalıdır. Boş olmayan oxuma sorğusu üçün sıfır bayt oxunması axının bitdiyini bildirir; bu, hazırda növbədə bayt olmamasından fərqlidir.

Proxy vaxt fasilələrini nəzərəçarpan edə bilər, lakin boş qəbul növbəsini mesajın sonu markerinə çevirmir.

Əlaqəli məqalələr