Java DatagramSocket и прослеђивање UDP преко SOCKS5
Схватите зашто Java UDP сокету треба SOCKS5 UDP имплементација и када TCP везе већ користе SOCKS.
Ваш Java HTTP захтев ради кроз SOCKS, али UDP функција и даље шаље саобраћај директно или не успева. Подешавање SOCKS својстава JVM-а не даје DatagramSocket SOCKS5 UDP имплементацију.
DatagramSocket API шаље и прима датаграме адресиране на мрежне крајње тачке. Његов метод connect() бира партнера за тај сокет. Он не обавља SOCKS преговарање са партнером.
SOCKS5 UDP рута захтева додатни рад
SOCKS5 дефинише UDP асоцијацију успостављену преко TCP контролне везе. Клијент затим размењује инкапсулиране датаграме са адресом прослеђивања коју даје прокси. Свака инкапсулирана порука идентификује своје одредиште. Имплементација клијента мора да обради то уоквиравање и трајање контролне везе.
Усмеравање обичног UDP сокета на TCP порт за слушање проксија прескаче те кораке. Слање сирових датаграма ваше апликације на ту адресу није замена за асоцијацију.
Изаберите библиотеку или функцију апликације која изричито подржава прослеђивање UDP преко SOCKS5 и потврдите да га подржава и сервер. Библиотека која оглашава SOCKS подршку може да имплементира само TCP CONNECT. Спецификација протокола разликује те команде.
Прослеђивању UDP је такође потребна употребљива путања
Успешна TCP веза са проксијем успоставља само контролну путању. Заштитни зидови или понашање NAT-а и даље могу да ометају датаграме послате прослеђивању. Прикупите враћену крајњу тачку прослеђивања и сваку грешку прослеђивања пре него што закључите да је одредиште апликације ван мреже.
Коначно, SOCKS подршка за пренос не додаје гаранције доставе UDP-у. Сопствена временска ограничења ваше апликације, руковање губицима и ограничења величине порука и даље важе након промене руте.