Ձեր 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-ին առաքման երաշխիքներ չի ավելացնում։ Ձեր հավելվածի սեփական ժամկետները, կորուստների կառավարումը և հաղորդագրության չափի սահմանափակումները դեռ գործում են երթուղու փոփոխությունից հետո։

Առնչվող հոդվածներ