ਤੁਹਾਡੀ Java HTTP ਬੇਨਤੀ SOCKS ਰਾਹੀਂ ਕੰਮ ਕਰਦੀ ਹੈ, ਪਰ UDP ਸੁਵਿਧਾ ਅਜੇ ਵੀ ਟ੍ਰੈਫਿਕ ਸਿੱਧਾ ਭੇਜਦੀ ਹੈ ਜਾਂ ਫੇਲ੍ਹ ਹੁੰਦੀ ਹੈ। JVM ਦੀਆਂ SOCKS ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਸੈੱਟ ਕਰਨ ਨਾਲ DatagramSocket ਨੂੰ SOCKS5 UDP ਲਾਗੂਕਰਨ ਨਹੀਂ ਮਿਲਦਾ।

DatagramSocket API ਨੈੱਟਵਰਕ ਐਂਡਪੌਇੰਟਾਂ ਨੂੰ ਪਤਾ ਕੀਤੇ ਡੇਟਾਗ੍ਰਾਮ ਭੇਜਦਾ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। ਇਸਦੀ connect() ਵਿਧੀ ਉਸ ਸਾਕਟ ਲਈ ਸਾਥੀ ਚੁਣਦੀ ਹੈ। ਇਹ ਸਾਥੀ ਨਾਲ ਕੋਈ SOCKS ਗੱਲਬਾਤ ਨਹੀਂ ਕਰਦੀ।

SOCKS5 UDP ਮਾਰਗ ਲਈ ਵਾਧੂ ਕੰਮ ਲੱਗਦਾ ਹੈ

SOCKS5 ਇੱਕ UDP ਸੰਬੰਧ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਜੋ TCP ਨਿਯੰਤਰਣ ਕਨੈਕਸ਼ਨ ਉੱਤੇ ਸਥਾਪਿਤ ਹੁੰਦਾ ਹੈ। ਫਿਰ ਕਲਾਇੰਟ ਪ੍ਰੌਕਸੀ ਵੱਲੋਂ ਦਿੱਤੇ ਰੀਲੇ ਪਤੇ ਨਾਲ ਐਨਕੈਪਸੂਲੇਟਿਡ ਡੇਟਾਗ੍ਰਾਮ ਦਾ ਆਦਾਨ-ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਹਰ ਐਨਕੈਪਸੂਲੇਟਿਡ ਸੁਨੇਹਾ ਆਪਣਾ ਟਿਕਾਣਾ ਦੱਸਦਾ ਹੈ। ਕਲਾਇੰਟ ਲਾਗੂਕਰਨ ਨੂੰ ਉਹ ਫਰੇਮਿੰਗ ਅਤੇ ਨਿਯੰਤਰਣ ਕਨੈਕਸ਼ਨ ਦੀ ਉਮਰ ਸੰਭਾਲਣੀ ਪੈਂਦੀ ਹੈ।

ਇੱਕ ਆਮ UDP ਸਾਕਟ ਨੂੰ ਪ੍ਰੌਕਸੀ ਦੇ TCP ਸੁਣਨ ਵਾਲੇ ਪੋਰਟ ਵੱਲ ਨਿਰਦੇਸ਼ਿਤ ਕਰਨ ਨਾਲ ਉਹ ਕਦਮ ਛੱਡ ਜਾਂਦੇ ਹਨ। ਤੁਹਾਡੀ ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਕੱਚੇ ਡੇਟਾਗ੍ਰਾਮ ਉਸ ਪਤੇ ਉੱਤੇ ਭੇਜਣਾ ਸੰਬੰਧ ਦਾ ਬਦਲ ਨਹੀਂ ਹੈ।

ਅਜਿਹੀ ਲਾਇਬ੍ਰੇਰੀ ਜਾਂ ਐਪਲੀਕੇਸ਼ਨ ਸੁਵਿਧਾ ਚੁਣੋ ਜੋ SOCKS5 UDP ਰੀਲੇ ਦਾ ਸਪਸ਼ਟ ਸਮਰਥਨ ਕਰਦੀ ਹੈ, ਅਤੇ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਸਰਵਰ ਵੀ ਇਸਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। SOCKS ਸਮਰਥਨ ਦਾ ਇਸ਼ਤਿਹਾਰ ਦੇਣ ਵਾਲੀ ਲਾਇਬ੍ਰੇਰੀ ਸਿਰਫ਼ TCP CONNECT ਲਾਗੂ ਕਰ ਸਕਦੀ ਹੈ। ਪ੍ਰੋਟੋਕੋਲ ਵਿਸ਼ੇਸ਼ਤਾ ਇਹਨਾਂ ਕਮਾਂਡਾਂ ਵਿੱਚ ਫ਼ਰਕ ਕਰਦੀ ਹੈ।

UDP ਰੀਲੇ ਨੂੰ ਵੀ ਵਰਤੋਂਯੋਗ ਰਾਹ ਚਾਹੀਦਾ ਹੈ

ਪ੍ਰੌਕਸੀ ਨਾਲ ਸਫਲ TCP ਕਨੈਕਸ਼ਨ ਸਿਰਫ਼ ਨਿਯੰਤਰਣ ਰਾਹ ਸਥਾਪਿਤ ਕਰਦਾ ਹੈ। ਫਾਇਰਵਾਲ ਜਾਂ NAT ਵਿਵਹਾਰ ਰੀਲੇ ਨੂੰ ਭੇਜੇ ਡੇਟਾਗ੍ਰਾਮ ਵਿੱਚ ਅਜੇ ਵੀ ਰੁਕਾਵਟ ਪਾ ਸਕਦੇ ਹਨ। ਇਹ ਸਿੱਟਾ ਕੱਢਣ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਐਪਲੀਕੇਸ਼ਨ ਟਿਕਾਣਾ ਆਫ਼ਲਾਈਨ ਹੈ, ਵਾਪਸ ਮਿਲਿਆ ਰੀਲੇ ਐਂਡਪੌਇੰਟ ਅਤੇ ਕੋਈ ਵੀ ਰੀਲੇ ਗਲਤੀ ਇਕੱਠੀ ਕਰੋ।

ਅੰਤ ਵਿੱਚ, SOCKS ਆਵਾਜਾਈ ਸਮਰਥਨ UDP ਵਿੱਚ ਡਿਲੀਵਰੀ ਦੀਆਂ ਗਾਰੰਟੀਆਂ ਨਹੀਂ ਜੋੜਦਾ। ਮਾਰਗ ਬਦਲਣ ਤੋਂ ਬਾਅਦ ਵੀ ਤੁਹਾਡੀ ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਆਪਣੇ ਟਾਈਮਆਊਟ, ਨੁਕਸਾਨ ਸੰਭਾਲਣ ਅਤੇ ਸੁਨੇਹਾ-ਆਕਾਰ ਦੀਆਂ ਸੀਮਾਵਾਂ ਲਾਗੂ ਰਹਿੰਦੀਆਂ ਹਨ।

ਸੰਬੰਧਿਤ ਲੇਖ