Как добавить поддержку SOCKS к моему приложению? и где я могу получить библиотеки?носки в java (открытие через носки)
ответ
От http://java.sun.com/javase/6/docs/technotes/guides/net/proxies.html
Протокол SOCKS, как определено в RFC 1928, обеспечивает основу для клиент-серверных приложений для безопасного обхода брандмауэра как на TCP и UDP уровне. В этом смысле он намного более общий, чем прокси более высокого уровня (например, HTTP или FTP-прокси). J2SE 5.0 обеспечивает поддержку SOCKS для клиентских сокетов TCP.
Есть 2 системные свойства, связанные с SOCKS:
socksProxyHost
для имени хоста прокси-сервера
socksProxyPort
SOCKS для номера порта, значение по умолчанию равно 1080
Обратите внимание, что там нет точки ('.') после префикса на этот раз. Это по историческим причинам и для обеспечения обратной совместимости. Как только прокси-сервер SOCKS указан таким образом, все TCP-соединения будут предприняты через прокси-сервер.
Пример:
$ java -DsocksProxyHost=socks.mydomain.com GetURL
Здесь во время выполнения кода, каждый исходящий сокет TCP будет проходить через прокси-сервер SOCKS на socks.mydomain.com:1080.
Теперь, что происходит, когда определены прокси-сервер SOCKS и прокси-сервер HTTP? Правило в том, что настройки для протоколов более высокого уровня, такие как HTTP или FTP, имеют приоритет над настройками SOCKS. Таким образом, в этом конкретном случае при установлении HTTP-соединения настройки прокси-сервера SOCKS будут проигнорированы, и с HTTP-прокси будет связаться. Давайте посмотрим на пример:
$ java -Dhttp.proxyHost=webcache.mydomain.com -Dhttp.proxyPort=8080 -DsocksProxyHost=socks.mydomain.com GetURL
Здесь, HTTP-адрес будет проходить через webcache.mydomain.com:8080 потому что настройки HTTP имеют преимущество. Но как насчет URL-адреса ftp? Поскольку для FTP не были назначены какие-либо настройки прокси-сервера, а поскольку FTP находится поверх TCP, то попытки FTP-подключения будут выполняться через прокси-сервер SOCKS на socks.mydomsain.com:1080. Если был указан FTP-прокси, тогда вместо этого использовался бы прокси-сервер.
С JKD 1.5, вы можете также настроить прокси на сокет программно:
Например:
SocketAddress sa = InetSocketAddress.createUnresolved("mysocksproxy.com", 1080);
Proxy proxy = new Proxy(Proxy.Type.SOCKS, sa);
Socket s = new Socket(proxy);
Вы также можете поместить этот код в SocketFactory.
Это также приведет к тому, что соединения UDP (Dgram) пройдут через указанный прокси? – hexafraction