NetworkStream.DataAvailable የ HTTP ምላሽ መጨረሻን አያመላክትም
የ HTTP ጭነቶች እንዳይቆረጡ ለመከላከል ከ NetworkStream.DataAvailable ይልቅ የመልእክት ማዕቀፍ ይጠቀሙ።
NetworkStream.DataAvailable == false ማለት ወዲያውኑ ለማንበብ የተዘጋጁ ባይቶች የሉም ማለት ነው። ግን የ HTTP ምላሽ ተጠናቅቋል ማለት አይደለም። በዚያ የሚቆም ዑደት በፓኬቶች መካከል ባለው ክፍተት መደበኛ የ SOCKS ጭነትን ሊቆርጥ ይችላል።
SOCKS የ TCP ግንኙነቱን ካቋቋመ በኋላ፣ የ HTTP ማዕቀፍ አሁንም የማጠናቀቂያ ደንቡን ይሰጣል፦
- የ Content-Length አካል ከተገለጸው የይዘት ባይት በኋላ ያበቃል።
- በ chunk የተከፋፈለ ምላሽ የመጨረሻ chunk እና ተገቢውን trailer ይፈልጋል።
- በግንኙነት የተወሰነ ምላሽ ከግንኙነቱ ጋር ያበቃል።
- አንዳንድ ሁኔታዎችና ለ HEAD የሚሰጡ ምላሾች አካል የላቸውም።
ተገቢውን ደንብ ለማወቅ ሁኔታውንና ራስጌዎችን ያንብቡ። መዘጋትን ብቻ መጠበቅ አጠቃላይ መፍትሔ አይደለም፣ ምክንያቱም የተጠናቀቀ የ HTTP ምላሽ ግንኙነቱን ክፍት ሊያስቀምጥ ይችላል። የአንድ ቋት አቅምም ከምላሹ ርዝመት ጋር ግንኙነት የለውም።
የ HTTP ደንበኛው የማዕቀፍ አተገባበር የተመረጠውን የፕሮክሲ ማጓጓዣ ሲደግፍ ይጠቀሙበት። በተኳኋኝ ዘመናዊ የ .NET ማስኬጃ ጊዜ ላይ የ HttpClient አገር በቀል SOCKS ድጋፍ ያስቡ። ጥሬ አተገባበር በከፊል ራስጌዎችና በአካል ንባቦች ላይ የመተንተን ሁኔታን ማስቀመጥ እና ስኬታማ ማጠናቀቅን ከስረዛ፣ ከጊዜ ማለቅና ካልተጠበቀ EOF መለየት አለበት። ባዶ ላልሆነ የንባብ ጥያቄ፣ ዜሮ ባይት መነበብ ፍሰቱ አብቅቷል ማለት ነው፤ ይህ አሁን ምንም ባይት በረድፍ አለመኖሩ የተለየ ነው።
ፕሮክሲው የጊዜ ክፍተቶችን ይበልጥ የሚታዩ ሊያደርግ ይችላል፣ ነገር ግን ባዶ የመቀበያ ረድፍን የመልእክት መጨረሻ ምልክት አይለውጠውም።