NetworkStream.DataAvailable HTTP ପ୍ରତିକ୍ରିୟାର ଶେଷ ଚିହ୍ନଟ କରେ ନାହିଁ
ଶେଷ ସର୍ତ୍ତ ଭାବରେ NetworkStream.DataAvailable ବଦଳରେ ସନ୍ଦେଶ ଫ୍ରେମିଂ ବ୍ୟବହାର କରି କଟା HTTP ଡାଉନଲୋଡ ରୋକନ୍ତୁ।
NetworkStream.DataAvailable == false ଅର୍ଥ ତୁରନ୍ତ ପଢ଼ିବା ପାଇଁ କୌଣସି ବାଇଟ ପ୍ରସ୍ତୁତ ନାହିଁ। ଏହାର ଅର୍ଥ HTTP ପ୍ରତିକ୍ରିୟା ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି ନୁହେଁ। ସେଠାରେ ଅଟକୁଥିବା ଲୁପ ପ୍ୟାକେଟ ମଧ୍ୟରେ ବ୍ୟବଧାନ ସମୟରେ ସମ୍ପୂର୍ଣ୍ଣ ସ୍ୱାଭାବିକ SOCKS ଡାଉନଲୋଡ କାଟିପାରେ।
SOCKS TCP ସଂଯୋଗ ସ୍ଥାପନ କରିବା ପରେ ମଧ୍ୟ ସମ୍ପୂର୍ଣ୍ଣତାର ନିୟମ HTTP ଫ୍ରେମିଂ ଦେଇଥାଏ:
- Content-Length ଥିବା ବଡି ଘୋଷିତ ସାମଗ୍ରୀ ବାଇଟ ପରେ ଶେଷ ହୁଏ।
- Chunked ପ୍ରତିକ୍ରିୟା ପାଇଁ ଏହାର ଶେଷ chunk ଓ ପ୍ରଯୁଜ୍ୟ trailer ଆବଶ୍ୟକ।
- ସଂଯୋଗ-ନିର୍ଦ୍ଧାରିତ ପ୍ରତିକ୍ରିୟା ସଂଯୋଗ ସହିତ ଶେଷ ହୁଏ।
- କେତେକ ସ୍ଥିତି ଓ HEAD ପ୍ରତିକ୍ରିୟାରେ ବଡି ନଥାଏ।
ପ୍ରଯୁଜ୍ୟ ନିୟମ ନିର୍ଦ୍ଧାରଣ ପାଇଁ ସ୍ଥିତି ଓ ହେଡର ପଢ଼ନ୍ତୁ। କେବଳ ବନ୍ଦ ହେବାର ଅପେକ୍ଷା କରିବା ସାଧାରଣ ସମାଧାନ ନୁହେଁ, କାରଣ ସମ୍ପୂର୍ଣ୍ଣ HTTP ପ୍ରତିକ୍ରିୟା ସଂଯୋଗ ଖୋଲା ରଖିପାରେ। ଏକ ବଫରର କ୍ଷମତା ମଧ୍ୟ ପ୍ରତିକ୍ରିୟାର ଲମ୍ବ ସହିତ ସମ୍ପର୍କିତ ନୁହେଁ।
HTTP କ୍ଲାଏଣ୍ଟର ଫ୍ରେମିଂ କାର୍ଯ୍ୟାନ୍ୱୟନ ବ୍ୟବହାର କରନ୍ତୁ ଯେତେବେଳେ ଏହା ଚୟନିତ ପ୍ରକ୍ସି ପରିବହନକୁ ସମର୍ଥନ କରେ। ସୁସଙ୍ଗତ ଆଧୁନିକ .NET ରନଟାଇମରେ HttpClient ର ମୂଳ SOCKS ସମର୍ଥନ ବିଚାର କରନ୍ତୁ। କଞ୍ଚା କାର୍ଯ୍ୟାନ୍ୱୟନ ଆଂଶିକ ହେଡର ଓ ବଡି ପଠନ ମଧ୍ୟରେ ପାର୍ସିଂ ସ୍ଥିତି ରଖିବା ସହିତ ସଫଳ ସମ୍ପୂର୍ଣ୍ଣତାକୁ ବାତିଲ, ଟାଇମଆଉଟ ଓ ଅପ୍ରତ୍ୟାଶିତ EOF ଠାରୁ ଅଲଗା କରିବା ଉଚିତ। ଖାଲି ନଥିବା ପଠନ ଅନୁରୋଧରେ ଶୂନ୍ୟ ବାଇଟ ପଢ଼ିବାର ଅର୍ଥ stream ଶେଷ ହୋଇଛି; ଏହା ଏହି ମୁହୂର୍ତ୍ତରେ କୌଣସି ବାଇଟ ଧାଡ଼ିରେ ନଥିବାରୁ ଭିନ୍ନ।
ପ୍ରକ୍ସି ସମୟ ବ୍ୟବଧାନକୁ ଲକ୍ଷଣୀୟ କରିପାରେ, କିନ୍ତୁ ଏହା ଖାଲି ଗ୍ରହଣ ଧାଡ଼ିକୁ ସନ୍ଦେଶର ଶେଷ ଚିହ୍ନରେ ପରିଣତ କରେ ନାହିଁ।