NetworkStream.DataAvailable এ HTTP সঁহাৰিৰ সমাপ্তি চিহ্নিত নকৰে
NetworkStream.DataAvailable ক সমাপ্তিৰ চৰ্ত হিচাপে নলৈ বাৰ্তা ফ্ৰেমিং ব্যৱহাৰ কৰি কটা যোৱা HTTP ডাউনলোড ৰোধ কৰক।
NetworkStream.DataAvailable == false ৰ অৰ্থ হৈছে তৎক্ষণাত পঢ়িবলৈ কোনো বাইট সাজু নাই। ইয়াৰ অৰ্থ HTTP সঁহাৰি সম্পূৰ্ণ হৈছে বুলি নহয়। তাত ৰৈ যোৱা এটা লুপে পেকেটৰ মাজৰ ব্যৱধানত সম্পূৰ্ণ স্বাভাৱিক SOCKS ডাউনলোড কাটি পেলাব পাৰে।
SOCKS এ TCP সংযোগ স্থাপন কৰাৰ পিছত, HTTP ফ্ৰেমিঙেই সমাপ্তিৰ নিয়ম যোগান ধৰে:
- Content-Length থকা বডি ইয়াৰ ঘোষিত সমল বাইটৰ পিছত শেষ হয়।
- Chunked সঁহাৰিৰ বাবে ইয়াৰ সমাপ্তি chunk আৰু প্ৰযোজ্য trailer প্ৰয়োজন।
- সংযোগ-নিৰ্ধাৰিত সঁহাৰি সংযোগৰ সৈতে শেষ হয়।
- কিছু status আৰু HEAD ৰ সঁহাৰিত বডি নাথাকে।
প্ৰযোজ্য নিয়ম নিৰ্ধাৰণ কৰিবলৈ status আৰু header পঢ়ক। কেৱল বন্ধ হোৱালৈ অপেক্ষা কৰাটো সাধাৰণ সমাধান নহয়, কাৰণ সম্পূৰ্ণ HTTP সঁহাৰিয়ে সংযোগ খোলা ৰাখিব পাৰে। এটা buffer ৰ ধাৰণক্ষমতাৰো সঁহাৰিৰ দৈৰ্ঘ্যৰ সৈতে সম্পৰ্ক নাই।
HTTP client ৰ ফ্ৰেমিং ৰূপায়ণ ব্যৱহাৰ কৰক যেতিয়া ই বাছনি কৰা proxy পৰিবহন সমৰ্থন কৰে। উপযুক্ত আধুনিক .NET ৰানটাইমত HttpClient ৰ নিজস্ব SOCKS সমৰ্থন বিবেচনা কৰক। এটা কেঁচা ৰূপায়ণে আংশিক header আৰু বডি পঢ়াৰ মাজেৰে পাৰ্চিং অৱস্থা ৰাখিব লাগিব আৰু সফল সমাপ্তিক বাতিল, timeout আৰু অপ্ৰত্যাশিত EOF ৰ পৰা পৃথক কৰিব লাগিব। খালী নোহোৱা পঢ়াৰ অনুৰোধত, শূন্য বাইট পঢ়াৰ অৰ্থ হৈছে stream ৰ সমাপ্তি; এইটো এই মুহূৰ্তত কোনো বাইট শাৰীত নথকাৰ পৰা বেলেগ।
Proxy এ সময়ৰ ব্যৱধান লক্ষণীয় কৰি তুলিব পাৰে, কিন্তু ই এটা খালী গ্ৰহণ শাৰীক বাৰ্তাৰ সমাপ্তিৰ চিহ্নলৈ সলনি নকৰে।