NetworkStream.DataAvailable HTTP பதிலின் முடிவைக் குறிக்காது
முடிவு நிபந்தனையாக NetworkStream.DataAvailable க்குப் பதிலாக செய்தி சட்டகமிடலைப் பயன்படுத்தி துண்டிக்கப்பட்ட HTTP பதிவிறக்கங்களைத் தவிர்க்கவும்.
NetworkStream.DataAvailable == false என்பது உடனடியாகப் படிக்கத் தயாராக பைட்டுகள் இல்லை என்பதைக் குறிக்கிறது. HTTP பதில் முழுமையடைந்தது என்று அர்த்தமல்ல. அங்கு நிற்கும் சுழற்சி பாக்கெட்டுகளுக்கு இடையிலான இடைவெளியில் முற்றிலும் சாதாரணமான SOCKS பதிவிறக்கத்தை வெட்டக்கூடும்.
SOCKS TCP இணைப்பை நிறுவிய பிறகும் நிறைவு விதியை HTTP சட்டகமிடலே வழங்குகிறது:
- Content-Length உள்ள உடல் அறிவிக்கப்பட்ட உள்ளடக்க பைட்டுகளுக்குப் பிறகு முடிகிறது.
- chunked பதிலுக்கு அதன் இறுதி chunk மற்றும் பொருந்தும் trailer தேவை.
- இணைப்பால் வரையறுக்கப்பட்ட பதில் இணைப்புடன் முடிகிறது.
- சில நிலைகள் மற்றும் HEAD க்கான பதில்களுக்கு உடல் இல்லை.
பொருந்தும் விதியைத் தீர்மானிக்க நிலை மற்றும் தலைப்புகளைப் படியுங்கள். மூடுவதற்காக மட்டும் காத்திருப்பது பொதுவான தீர்வு அல்ல, ஏனெனில் முழுமையான HTTP பதில் இணைப்பைத் திறந்தே வைக்கக்கூடும். ஒரு buffer இன் கொள்ளளவும் பதிலின் நீளத்துடன் அதே அளவு தொடர்பற்றது.
தேர்ந்தெடுக்கப்பட்ட ப்ராக்ஸி போக்குவரத்தை HTTP கிளையண்டின் சட்டகமிடல் செயலாக்கம் ஆதரிக்கும்போது அதைப் பயன்படுத்துங்கள். இணக்கமான நவீன .NET இயக்க நேரத்தில் HttpClient இன் சொந்த SOCKS ஆதரவைக் கவனத்தில் கொள்ளுங்கள். மூலச் செயலாக்கம் பகுதி தலைப்புகள் மற்றும் உடல் படிப்புகளுக்கு இடையே பாகுபடுத்தும் நிலையைத் தக்கவைத்து, வெற்றிகரமான நிறைவை ரத்து, நேரம் முடிவு மற்றும் எதிர்பாராத EOF இலிருந்து வேறுபடுத்த வேண்டும். காலியாக இல்லாத படிப்புக் கோரிக்கையில் பூஜ்ஜிய பைட்டுகள் படிக்கப்படுவது என்பது ஸ்ட்ரீம் முடிந்தது என்பதாகும்; இது இப்போது வரிசையில் பைட்டுகள் இல்லாததிலிருந்து வேறுபடும்.
ப்ராக்ஸி நேர இடைவெளிகளைக் கண்கூடாக்கலாம், ஆனால் அது காலியான பெறுதல் வரிசையை செய்தி முடிவு அடையாளமாக மாற்றாது.