NetworkStream.DataAvailable == false дароо окууга даяр байт жок дегенди билдирет. Бул HTTP жообу аяктады дегенди билдирбейт. Ал жерде токтогон цикл пакеттердин ортосундагы тыныгуу учурунда таптакыр кадимки SOCKS жүктөөсүн кесип салышы мүмкүн.

SOCKS TCP байланышын түзгөндөн кийин да аяктоо эрежесин HTTP алкагы берет:

  • Content-Length денеси жарыяланган мазмун байттарынан кийин аяктайт.
  • Chunked жообуна анын акыркы chunk жана тиешелүү trailer керек.
  • Байланыш менен чектелген жооп байланыш менен кошо аяктайт.
  • Айрым статустардын жана HEAD жоопторунун денеси жок.

Колдонулуучу эрежени аныктоо үчүн статусту жана аталыштарды окуңуз. Жалгыз жабылууну күтүү жалпы чечим эмес, анткени толук HTTP жообу байланышты ачык калтырышы мүмкүн. Бир буфердин сыйымдуулугу да жооптун узундугуна ошондой эле байланышсыз.

HTTP кардарынын алкак ишке ашыруусун тандалган прокси транспортун колдосо, ошону пайдаланыңыз. Шайкеш заманбап .NET аткаруу чөйрөсүндө HttpClient'тин түпкү SOCKS колдоосун карап көрүңүз. Чийки ишке ашыруу жарым-жартылай аталыштар жана дене окуулары боюнча талдоо абалын сакташы жана ийгиликтүү аяктоону жокко чыгаруудан, убакыт бүтүүдөн жана күтүлбөгөн EOF'тон айырмалашы керек. Бош эмес окуу сурамында нөл байт окулушу агымдын аяктаганын билдирет; бул так ушул учурда кезекте байт жоктугунан айырмаланат.

Прокси убакыт тыныгууларын көрүнүктүү кыла алат, бирок бош кабыл алуу кезегин билдирүүнүн аягынын белгисине айландырбайт.

Тектеш макалалар