NetworkStream.DataAvailable == false ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਤੁਰੰਤ ਪੜ੍ਹਨ ਲਈ ਕੋਈ ਬਾਈਟ ਤਿਆਰ ਨਹੀਂ ਹੈ। ਇਸ ਦਾ ਮਤਲਬ ਇਹ ਨਹੀਂ ਕਿ HTTP ਜਵਾਬ ਪੂਰਾ ਹੋ ਗਿਆ ਹੈ। ਉੱਥੇ ਰੁਕਣ ਵਾਲਾ ਲੂਪ ਪੈਕਟਾਂ ਵਿਚਕਾਰ ਅੰਤਰਾਲ ਦੌਰਾਨ ਪੂਰੀ ਤਰ੍ਹਾਂ ਆਮ SOCKS ਡਾਊਨਲੋਡ ਕੱਟ ਸਕਦਾ ਹੈ।

SOCKS ਵੱਲੋਂ TCP ਕਨੈਕਸ਼ਨ ਬਣਾਉਣ ਤੋਂ ਬਾਅਦ ਵੀ ਪੂਰਨਤਾ ਦਾ ਨਿਯਮ HTTP ਫਰੇਮਿੰਗ ਹੀ ਦਿੰਦਾ ਹੈ:

  • Content-Length ਵਾਲਾ ਬਾਡੀ ਐਲਾਨੇ ਗਏ ਸਮੱਗਰੀ ਬਾਈਟਾਂ ਤੋਂ ਬਾਅਦ ਖਤਮ ਹੁੰਦਾ ਹੈ।
  • Chunked ਜਵਾਬ ਲਈ ਉਸਦਾ ਆਖਰੀ chunk ਅਤੇ ਲਾਗੂ trailer ਲੋੜੀਂਦੇ ਹਨ।
  • ਕਨੈਕਸ਼ਨ-ਸੀਮਿਤ ਜਵਾਬ ਕਨੈਕਸ਼ਨ ਨਾਲ ਖਤਮ ਹੁੰਦਾ ਹੈ।
  • ਕੁਝ ਸਥਿਤੀਆਂ ਅਤੇ HEAD ਦੇ ਜਵਾਬਾਂ ਵਿੱਚ ਬਾਡੀ ਨਹੀਂ ਹੁੰਦੀ।

ਲਾਗੂ ਨਿਯਮ ਤੈਅ ਕਰਨ ਲਈ ਸਥਿਤੀ ਅਤੇ ਹੈਡਰ ਪੜ੍ਹੋ। ਸਿਰਫ਼ ਬੰਦ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰਨਾ ਆਮ ਹੱਲ ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ ਪੂਰਾ HTTP ਜਵਾਬ ਕਨੈਕਸ਼ਨ ਖੁੱਲ੍ਹਾ ਛੱਡ ਸਕਦਾ ਹੈ। ਇੱਕ ਬਫਰ ਦੀ ਸਮਰੱਥਾ ਵੀ ਜਵਾਬ ਦੀ ਲੰਬਾਈ ਨਾਲ ਉਤਨੀ ਹੀ ਅਸੰਬੰਧਿਤ ਹੈ।

HTTP ਕਲਾਇੰਟ ਦਾ ਫਰੇਮਿੰਗ ਅਮਲ ਵਰਤੋ ਜਦੋਂ ਇਹ ਚੁਣੇ ਗਏ ਪ੍ਰਾਕਸੀ ਆਵਾਜਾਈ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। ਅਨੁਕੂਲ ਆਧੁਨਿਕ .NET ਰਨਟਾਈਮ ਤੇ HttpClient ਦਾ ਅਸਲੀ SOCKS ਸਮਰਥਨ ਵਿਚਾਰੋ। ਕੱਚੇ ਅਮਲ ਨੂੰ ਅੰਸ਼ਿਕ ਹੈਡਰਾਂ ਅਤੇ ਬਾਡੀ ਪੜ੍ਹਨ ਦੌਰਾਨ ਪਾਰਸਿੰਗ ਸਥਿਤੀ ਬਣਾਈ ਰੱਖਣੀ ਚਾਹੀਦੀ ਹੈ ਅਤੇ ਸਫਲ ਪੂਰਨਤਾ ਨੂੰ ਰੱਦ ਕਰਨ, ਟਾਈਮਆਊਟ ਅਤੇ ਅਣਕਿਆਸੇ EOF ਤੋਂ ਵੱਖ ਪਛਾਣਨਾ ਚਾਹੀਦਾ ਹੈ। ਖਾਲੀ ਨਾ ਹੋਣ ਵਾਲੀ ਪੜ੍ਹਨ ਬੇਨਤੀ ਵਿੱਚ ਜ਼ੀਰੋ ਬਾਈਟ ਪੜ੍ਹਨ ਦਾ ਮਤਲਬ ਹੈ ਸਟ੍ਰੀਮ ਖਤਮ ਹੋ ਗਈ; ਇਹ ਇਸ ਵੇਲੇ ਕਤਾਰ ਵਿੱਚ ਕੋਈ ਬਾਈਟ ਨਾ ਹੋਣ ਤੋਂ ਵੱਖਰਾ ਹੈ।

ਪ੍ਰਾਕਸੀ ਸਮੇਂ ਦੇ ਅੰਤਰਾਲ ਦਿਖਾਈ ਦੇਣ ਯੋਗ ਬਣਾ ਸਕਦਾ ਹੈ, ਪਰ ਇਹ ਖਾਲੀ ਪ੍ਰਾਪਤੀ ਕਤਾਰ ਨੂੰ ਸੁਨੇਹੇ ਦੇ ਅੰਤ ਦੇ ਚਿੰਨ੍ਹ ਵਿੱਚ ਨਹੀਂ ਬਦਲਦਾ।

ਸੰਬੰਧਿਤ ਲੇਖ