Teie Java HTTP-päring töötab SOCKSi kaudu, kuid UDP-funktsioon saadab liiklust endiselt otse või ebaõnnestub. JVM-i SOCKS-omaduste seadistamine ei anna DatagramSocket-le SOCKS5 UDP-teostust.

DatagramSocket API saadab ja võtab vastu võrgu lõpp-punktidele adresseeritud datagramme. Selle meetod connect() valib sellele soklile partneri. See ei tee partneriga SOCKS-läbirääkimisi.

SOCKS5 UDP-marsruut nõuab lisatööd

SOCKS5 määratleb UDP-seose, mis luuakse TCP juhtühenduse kaudu. Seejärel vahetab klient kapseldatud datagramme puhverserveri antud edastusaadressiga. Iga kapseldatud sõnum määrab oma sihtkoha. Kliendi teostus peab haldama seda raamimist ja juhtühenduse eluiga.

Tavalise UDP-sokli suunamine puhverserveri TCP kuulamisporti jätab need sammud vahele. Rakenduse toorandmete saatmine sellele aadressile ei asenda seost.

Valige teek või rakenduse funktsioon, mis toetab selgesõnaliselt SOCKS5 UDP-edastust, ja kinnitage, et ka server toetab seda. SOCKS-tuge reklaamiv teek võib rakendada ainult TCP CONNECT-i. Protokolli spetsifikatsioon eristab käske.

Ka UDP-edastus vajab kasutatavat teed

Edukas TCP-ühendus puhverserveriga loob ainult juhttee. Tulemüürid või NAT-i käitumine võivad endiselt edastusse saadetud datagramme segada. Koguge tagastatud edastuse lõpp-punkt ja mis tahes edastustõrge enne, kui järeldate, et rakenduse sihtkoht on võrguühenduseta.

Lõpuks ei lisa SOCKS-i transporditugi UDP-le kohaletoimetamise tagatisi. Rakenduse enda ajalõpud, kadude käsitlemine ja sõnumi suuruse piirangud kehtivad ka pärast marsruudi muutumist.

Seotud artiklid