Как настроить прокси 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 без изменения существующего кода?

Ответы на вопрос(2)

Ваш ответ на вопрос