Как настроить прокси socks в Java NIO
Я разрабатываю инструмент, который включает в себя принудительный весь сетевой трафик приложения для прохождения через socks-прокси в Java. Для старого Socket API я могу просто установить системные свойства "-DsocksProxyHost = my-host -DsocksProxyPort = my-port ", но это не такработать с NIO.
Я попробовал решение:
Я написал NIO SocketChannel под названием "ProxySocketChannel» который расширяет SocketChannel. Он содержит соединение socks и другую логику прокси socks. Но когда я запускаю его, я получаюIllegalSelectorException» в этой строке кода вSelectorImpl.register ":
if (!(ch instanceof SelChImpl))
throw new IllegalSelectorException();
sun.nio.ch.SelChImpl - это видимая посылка, поэтому я могут доступ к нему. Я попробовал хитрое решение: я поставил свойProxySocketChannel» в упаковке "sun.nio.ch», Компиляция прошла, но я получил ошибку при запуске:
java.lang.IllegalAccessError: class sun.nio.ch.ProxySocketChannel cannot access its superinterface sun.nio.ch.SelChImpl
Я неНе знаю, почему класс sun.nio.ch.ProxySocketChannel с пакетом sun.nio.ch по-прежнему не может получить доступ к sun.nio.ch.SelChImpl. Я думаю, что есть некоторая защита для встроенных классов JDK. Есть ли способ получить к нему доступ?
Моя версия JDK - 1.6.0_65.
Иначе, есть ли способ настроить прокси socks для NIO без изменения существующего кода?