NetworkStream.DataAvailable == false എന്നാൽ ഉടനടി വായിക്കാൻ ബൈറ്റുകൾ തയ്യാറല്ല എന്നാണ്. HTTP പ്രതികരണം പൂർത്തിയായി എന്നല്ല. അവിടെ നിൽക്കുന്ന ലൂപ്പ് പാക്കറ്റുകൾക്കിടയിലുള്ള ഇടവേളയിൽ തികച്ചും സാധാരണമായ SOCKS ഡൗൺലോഡ് മുറിച്ചേക്കാം.

SOCKS TCP കണക്ഷൻ സ്ഥാപിച്ചതിനു ശേഷവും പൂർത്തീകരണ നിയമം HTTP ഫ്രെയിമിംഗ് തന്നെ നൽകുന്നു:

  • Content-Length ബോഡി പ്രഖ്യാപിത ഉള്ളടക്ക ബൈറ്റുകൾക്ക് ശേഷം അവസാനിക്കുന്നു.
  • chunked പ്രതികരണത്തിന് അതിന്റെ അന്തിമ chunk-ഉം ബാധകമായ trailer-ഉം ആവശ്യമാണ്.
  • കണക്ഷൻ-നിർണ്ണിത പ്രതികരണം കണക്ഷനോടൊപ്പം അവസാനിക്കുന്നു.
  • ചില സ്റ്റാറ്റസുകൾക്കും HEAD-നുള്ള പ്രതികരണങ്ങൾക്കും ബോഡി ഇല്ല.

ബാധകമായ നിയമം നിർണ്ണയിക്കാൻ സ്റ്റാറ്റസും ഹെഡറുകളും വായിക്കുക. അടയ്ക്കുന്നതിനായി മാത്രം കാത്തിരിക്കുന്നത് പൊതുവായ പരിഹാരമല്ല, കാരണം പൂർണ്ണമായ HTTP പ്രതികരണത്തിന് കണക്ഷൻ തുറന്നിടാൻ കഴിയും. ഒരു ബഫറിന്റെ ശേഷിയും പ്രതികരണത്തിന്റെ നീളവുമായി ബന്ധമില്ല.

തിരഞ്ഞെടുത്ത പ്രോക്സി ഗതാഗതം പിന്തുണയ്ക്കുമ്പോൾ HTTP ക്ലയന്റിന്റെ ഫ്രെയിമിംഗ് നടപ്പാക്കൽ ഉപയോഗിക്കുക. അനുയോജ്യമായ ആധുനിക .NET റൺടൈമിൽ HttpClient-ന്റെ സ്വദേശീയ SOCKS പിന്തുണ പരിഗണിക്കുക. അസംസ്കൃത നടപ്പാക്കൽ ഭാഗിക ഹെഡറുകളിലും ബോഡി വായനകളിലും പാഴ്സിംഗ് അവസ്ഥ നിലനിർത്തുകയും വിജയകരമായ പൂർത്തീകരണത്തെ റദ്ദാക്കൽ, സമയപരിധി, അപ്രതീക്ഷിത EOF എന്നിവയിൽ നിന്ന് വേർതിരിക്കുകയും വേണം. ശൂന്യമല്ലാത്ത വായന അഭ്യർത്ഥനയിൽ പൂജ്യം ബൈറ്റ് വായിക്കുന്നത് സ്ട്രീം അവസാനിച്ചു എന്നാണ്; ഈ നിമിഷം ക്യൂവിൽ ബൈറ്റുകൾ ഇല്ലാത്തതിൽ നിന്ന് ഇത് വ്യത്യസ്തമാണ്.

പ്രോക്സിക്ക് സമയ ഇടവേളകൾ പ്രകടമാക്കാം, പക്ഷേ ശൂന്യമായ സ്വീകരണ ക്യൂവിനെ സന്ദേശാന്ത്യ അടയാളമാക്കി മാറ്റുന്നില്ല.

അനുബന്ധ ലേഖനങ്ങൾ