Jūsu Java HTTP pieprasījums darbojas caur SOCKS, taču UDP funkcija joprojām sūta datplūsmu tieši vai neizdodas. JVM SOCKS īpašību iestatīšana nedod DatagramSocket SOCKS5 UDP realizāciju.

DatagramSocket API sūta un saņem datagrammas, kas adresētas tīkla galapunktiem. Tā metode connect() izvēlas partneri šai ligzdai. Tā neveic SOCKS sarunas ar partneri.

SOCKS5 UDP maršrutam nepieciešams papildu darbs

SOCKS5 definē UDP asociāciju, kas tiek izveidota virs TCP vadības savienojuma. Pēc tam klients apmainās ar iekapsulētām datagrammām ar starpniekservera sniegto pārraides adresi. Katrs iekapsulētais ziņojums norāda savu galamērķi. Klienta realizācijai ir jāapstrādā šis ietvars un vadības savienojuma darbības laiks.

Parastas UDP ligzdas vēršana uz starpniekservera TCP klausīšanās portu izlaiž šos soļus. Jūsu lietojumprogrammas neapstrādātu datagrammu sūtīšana uz šo adresi neaizstāj asociāciju.

Izvēlieties bibliotēku vai lietojumprogrammas funkciju, kas skaidri atbalsta SOCKS5 UDP pārraidīšanu, un apstipriniet, ka serveris to arī atbalsta. Bibliotēka, kas reklamē SOCKS atbalstu, var realizēt tikai TCP CONNECT. Protokola specifikācija izšķir šīs komandas.

UDP pārraidei nepieciešams arī izmantojams ceļš

Veiksmīgs TCP savienojums ar starpniekserveri izveido tikai vadības ceļu. Ugunsmūri vai NAT uzvedība joprojām var traucēt datagrammām, kas sūtītas pārraidei. Apkopojiet atgriezto pārraides galapunktu un jebkuru pārraides kļūdu, pirms secināt, ka lietojumprogrammas galamērķis nav tiešsaistē.

Visbeidzot, SOCKS transporta atbalsts nepievieno UDP piegādes garantijas. Jūsu lietojumprogrammas pašas taimauti, zudumu apstrāde un ziņojumu izmēra ierobežojumi joprojām ir spēkā pēc maršruta maiņas.

Saistītie raksti