2009-07-09 112 views
6

我想用Apache的commons-net使用代理服務器建立一個FTP連接。在apache commons-net上使用FTP代理

但看着這個Does FTPClient support FTP connections through an FTP proxy server?讓我擔心。

我不得不介入系統屬性,Sun文檔聲明「如果指定了socksProxyHost,則所有TCP套接字將使用SOCKS代理服務器建立連接或接受一個。」
WTH?所有TCP套接字?我的數據庫連接怎麼樣?或者我可能想在不使用代理的同時打開其他FTP連接?他們都會受到影響嗎?

有沒有其他的方式來做到這一點,不會弄亂我的應用程序的其餘部分?

回答

7

您有幾種在Java中使用代理的方法,尤其是從版本1.5開始。

  1. 使用系統屬性:快速&強大,但靈活性有限
    • 您可以使用使用SOCKS代理所有的TCP連接。
    • 您還可以設置每個協議的代理,可行的HTTP,FTP和HTTPS
    • 對於這兩種方法,你可以指定的主機將不使用代理
  2. 使用java.net.Proxy類的列表(爪哇1.5+)來設置(或不)一個ProxyConnection
  3. Impleting一個java.net.ProxySelector(同上),這將確定每個Connection一個Proxy根據您的標準

請參閱detailled Sun technote on networking & proxies

+1

那麼,現在`SocketFactory`是要走的路 - 引用Commons-Net 3.3文檔https://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/SocketClient .html *「特別值得注意的是setSocketFactory方法...這對於添加SSL或代理支持特別有用」* – 2016-07-01 16:34:20