NetworkStream.DataAvailable == false ဆိုသည်မှာ ချက်ချင်းဖတ်ရန် အသင့်ရှိသော ဘိုက်များမရှိခြင်းကို ဆိုလိုသည်။ HTTP တုံ့ပြန်မှု ပြီးစီးပြီဟု မဆိုလိုပါ။ ထိုနေရာတွင် ရပ်သော ကွင်းဆက်သည် ပက်ကက်များကြား ကွက်လပ်အတွင်း ပုံမှန်ဖြစ်သော SOCKS ဒေါင်းလုဒ်ကို ဖြတ်တောက်နိုင်သည်။

SOCKS က TCP ချိတ်ဆက်မှုကို တည်ဆောက်ပြီးနောက်တွင်လည်း ပြီးစီးမှုစည်းမျဉ်းကို HTTP ဘောင်ဖွဲ့မှုက ပေးဆဲဖြစ်သည်။

  • Content-Length ပါသော ကိုယ်ထည်သည် ကြေညာထားသော အကြောင်းအရာဘိုက်များ ပြီးနောက် အဆုံးသတ်သည်။
  • chunked တုံ့ပြန်မှုတွင် အဆုံးသတ် chunk နှင့် သက်ဆိုင်ရာ trailer လိုအပ်သည်။
  • ချိတ်ဆက်မှုဖြင့် ကန့်သတ်ထားသော တုံ့ပြန်မှုသည် ချိတ်ဆက်မှုနှင့်အတူ အဆုံးသတ်သည်။
  • အချို့ status များနှင့် HEAD အတွက် တုံ့ပြန်မှုများတွင် ကိုယ်ထည်မရှိပါ။

သက်ဆိုင်သော စည်းမျဉ်းကို သတ်မှတ်ရန် status နှင့် header များကို ဖတ်ပါ။ ပိတ်သည်ကိုသာ စောင့်နေခြင်းသည် ယေဘုယျဖြေရှင်းနည်း မဟုတ်ပါ၊ အကြောင်းမှာ ပြည့်စုံသော HTTP တုံ့ပြန်မှုသည် ချိတ်ဆက်မှုကို ဖွင့်ထားနိုင်သည်။ buffer တစ်ခု၏ စွမ်းရည်သည်လည်း တုံ့ပြန်မှု၏ အရှည်နှင့် မသက်ဆိုင်ပါ။

ရွေးချယ်ထားသော ပရောက်စီ သယ်ယူပို့ဆောင်မှုကို ပံ့ပိုးသောအခါ HTTP client ၏ ဘောင်ဖွဲ့မှု အကောင်အထည်ဖော်မှုကို အသုံးပြုပါ။ သဟဇာတဖြစ်သော ခေတ်မီ .NET runtime တွင် HttpClient ၏ မူရင်း SOCKS ပံ့ပိုးမှုကို စဉ်းစားပါ။ အကြမ်းအကောင်အထည်ဖော်မှုသည် တစ်စိတ်တစ်ပိုင်း header များနှင့် ကိုယ်ထည်ဖတ်ခြင်းများကြား parsing အခြေအနေကို ထိန်းသိမ်းရမည်ဖြစ်ပြီး အောင်မြင်သော ပြီးစီးမှုကို ပယ်ဖျက်ခြင်း၊ အချိန်ကုန်ဆုံးခြင်းနှင့် မမျှော်လင့်သော EOF တို့မှ ခွဲခြားရမည်။ ဗလာမဟုတ်သော ဖတ်ရန် တောင်းဆိုမှုတွင် သုညဘိုက် ဖတ်ရခြင်းသည် stream ပြီးဆုံးခြင်းကို ဆိုလိုသည်။ ၎င်းသည် ယခုအချိန်တွင် တန်းစီတွင် ဘိုက်မရှိခြင်းနှင့် ကွာခြားသည်။

ပရောက်စီသည် အချိန်ကွက်လပ်များကို သိသာစေနိုင်သော်လည်း ဗလာဖြစ်သော လက်ခံတန်းစီကို မက်ဆေ့ခ်ျအဆုံးအမှတ်အသားအဖြစ် မပြောင်းလဲပါ။

ဆက်စပ်ဆောင်းပါးများ