NetworkStream.DataAvailable == false ಎಂದರೆ ತಕ್ಷಣ ಓದಲು ಯಾವುದೇ ಬೈಟ್‌ಗಳು ಸಿದ್ಧವಿಲ್ಲ. ಇದರ ಅರ್ಥ HTTP ಪ್ರತಿಕ್ರಿಯೆ ಪೂರ್ಣಗೊಂಡಿದೆ ಎಂದಲ್ಲ. ಅಲ್ಲಿ ನಿಲ್ಲುವ ಲೂಪ್ ಪ್ಯಾಕೆಟ್‌ಗಳ ನಡುವಿನ ಅಂತರದಲ್ಲಿ ಸಂಪೂರ್ಣ ಸಾಮಾನ್ಯ SOCKS ಡೌನ್‌ಲೋಡ್ ಅನ್ನು ಕತ್ತರಿಸಬಹುದು.

SOCKS TCP ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಿದ ನಂತರವೂ ಪೂರ್ಣತೆಯ ನಿಯಮವನ್ನು HTTP ಫ್ರೇಮಿಂಗ್ ನೀಡುತ್ತದೆ:

  • Content-Length ಇರುವ ಬಾಡಿ ಘೋಷಿತ ವಿಷಯ ಬೈಟ್‌ಗಳ ನಂತರ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ.
  • Chunked ಪ್ರತಿಕ್ರಿಯೆಗೆ ಅದರ ಅಂತಿಮ chunk ಮತ್ತು ಅನ್ವಯವಾಗುವ trailer ಬೇಕು.
  • ಸಂಪರ್ಕದಿಂದ ಸೀಮಿತವಾದ ಪ್ರತಿಕ್ರಿಯೆ ಸಂಪರ್ಕದೊಂದಿಗೆ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ.
  • ಕೆಲವು ಸ್ಥಿತಿಗಳು ಮತ್ತು HEAD ಗೆ ನೀಡುವ ಪ್ರತಿಕ್ರಿಯೆಗಳಿಗೆ ಬಾಡಿ ಇರುವುದಿಲ್ಲ.

ಅನ್ವಯವಾಗುವ ನಿಯಮವನ್ನು ನಿರ್ಧರಿಸಲು ಸ್ಥಿತಿ ಮತ್ತು ಹೆಡರ್‌ಗಳನ್ನು ಓದಿ. ಕೇವಲ ಮುಚ್ಚುವಿಕೆಗೆ ಕಾಯುವುದು ಸಾಮಾನ್ಯ ಪರಿಹಾರವಲ್ಲ, ಏಕೆಂದರೆ ಪೂರ್ಣ HTTP ಪ್ರತಿಕ್ರಿಯೆ ಸಂಪರ್ಕವನ್ನು ತೆರೆದು ಬಿಡಬಹುದು. ಒಂದು ಬಫರ್‌ನ ಸಾಮರ್ಥ್ಯವೂ ಪ್ರತಿಕ್ರಿಯೆಯ ಉದ್ದಕ್ಕೆ ಸಂಬಂಧಿಸಿಲ್ಲ.

HTTP ಕ್ಲೈಂಟ್‌ನ ಫ್ರೇಮಿಂಗ್ ಅನುಷ್ಠಾನವನ್ನು ಆಯ್ಕೆ ಮಾಡಿದ ಪ್ರಾಕ್ಸಿ ಸಾಗಣೆಯನ್ನು ಬೆಂಬಲಿಸಿದಾಗ ಬಳಸಿ. ಹೊಂದಾಣಿಕೆಯ ಆಧುನಿಕ .NET ರನ್‌ಟೈಮ್‌ನಲ್ಲಿ HttpClient ನ ಸ್ಥಳೀಯ SOCKS ಬೆಂಬಲ ಪರಿಗಣಿಸಿ. ಕಚ್ಚಾ ಅನುಷ್ಠಾನವು ಭಾಗಶಃ ಹೆಡರ್‌ಗಳು ಮತ್ತು ಬಾಡಿ ಓದುವಿಕೆಗಳ ನಡುವೆ ಪಾರ್ಸಿಂಗ್ ಸ್ಥಿತಿಯನ್ನು ಉಳಿಸಿಕೊಳ್ಳಬೇಕು ಮತ್ತು ಯಶಸ್ವಿ ಪೂರ್ಣತೆಯನ್ನು ರದ್ದತಿ, ಟೈಮೌಟ್ ಮತ್ತು ನಿರೀಕ್ಷಿಸದ EOF ನಿಂದ ಪ್ರತ್ಯೇಕಿಸಬೇಕು. ಖಾಲಿವಲ್ಲದ ಓದುವ ವಿನಂತಿಯಲ್ಲಿ ಶೂನ್ಯ ಬೈಟ್ ಓದುವುದು ಎಂದರೆ ಸ್ಟ್ರೀಮ್ ಕೊನೆಗೊಂಡಿದೆ; ಇದು ಈ ಕ್ಷಣದಲ್ಲಿ ಯಾವುದೇ ಬೈಟ್ ಸರದಿಯಲ್ಲಿಲ್ಲದಿರುವುದಕ್ಕಿಂತ ಭಿನ್ನ.

ಪ್ರಾಕ್ಸಿ ಸಮಯದ ಅಂತರಗಳನ್ನು ಗಮನಿಸುವಂತೆ ಮಾಡಬಹುದು, ಆದರೆ ಅದು ಖಾಲಿ ಸ್ವೀಕರಿಸುವ ಸರದಿಯನ್ನು ಸಂದೇಶಾಂತ್ಯದ ಗುರುತಾಗಿ ಬದಲಿಸುವುದಿಲ್ಲ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು