導航:首頁 > 代理服務 > java代理設置怎麼設置

java代理設置怎麼設置

發布時間:2024-01-16 03:47:25

① Java 中怎樣在程序中設置代理伺服器

從JDK1.5開始,Java在java.net包下提供了Proxy和ProxySelector兩個類,其中Proxy代表一個代理伺服器,可以在打開URLConnection連接時指定所用的Proxy實例,也可以在創建Socket連接時指定Proxy實例。而ProxySelector代表一個代理選擇器,它提供了對代理伺服器更加靈活的控制,它可以對HTTP、HTTPS、FTP、SOCKS等分別設置,而且還可以設置不需要通過代理伺服器的主機和地址。通過使用ProxySelector可以達到像在Internet Explorer、FireFox等軟體中設置代理伺服器類似的效果。

代理伺服器的功能就是代理網路用戶去取得網路信息。我們使用網路瀏覽器直接連接其他Internet站點取得網路信息時,通常需要發送Request請求來等到響應。代理伺服器是介於瀏覽器和Web伺服器之間的一台伺服器,有了它之後,瀏覽器不是直接到Web伺服器去取得網頁數據而是向代理伺服器發出請求,Request請求會先送到代理伺服器,由代理伺服器來取回瀏覽器所需要的信息並送回給網路瀏覽器。而且,大部分代理伺服器都具有緩沖的功能,就好像一個大的Cache,它有很大的存儲空間,它不斷將新取得的數據儲存到它本機的存儲器上,如果瀏覽器所請求的數據在它本機的存儲器上已經存在而且是最新的,那麼它就不重新從Web伺服器取數據,而直接將存儲器上的數據傳送給用戶的瀏覽器,這樣就能顯著提高瀏覽速度和效率。歸納起來代理伺服器主要提供如下兩個功能:

突破自身IP限制,對外隱藏自身IP地址。突破IP限制包括訪問國外受限站點,訪問國內特定單位、團體的內部資源。

提高訪問速度,代理伺服器提供的緩沖功能可以避免每個用戶都直接訪問遠程主機,從而提高客戶端訪問速度。

17.5.1 直接使用Proxy創建連接

Proxy有如下一個構造器:Proxy(Proxy.Type type, SocketAddress sa):創建表示代理伺服器的Proxy對象。而sa參數指定代理伺服器的地址,其中type是該代理伺服器的類型,該伺服器類型有如下三種:

(1)Proxy.Type.DIRECT:表示直接連接或缺少代理。

(2)Proxy.Type.HTTP:表示高級協議的代理,如 HTTP 或 FTP。

(3)Proxy.Type.SOCKS:表示 SOCKS(V4 或 V5)代理。

一旦創建了Proxy對象之後,程序就可以在使用URLConnection打開連接時,或創建Socket連接時傳入一個Proxy對象,作為本次連接所使用的代理伺服器。

其中URL包含了一個URLConnection openConnection(Proxy proxy)方法,該方法使用指定的代理伺服器來打開連接;而Socket則提供了一個Socket(Proxy proxy)構造器,該構造器使用指定的代理伺服器創建一個沒有連接的Socket對象。

下面以URLConnection為例來介紹如何在URLConnection中使用代理伺服器。

程序清單:codes/17/17-5/ProxyTest.java

上面程序中三行粗體字代碼設置Java打開HTTP訪問時的代理伺服器屬性,其中前兩行代碼設置代理伺服器的地址和埠,第三行代碼設置該代理HTTP訪問哪些主機時不需要使用代理伺服器。上面程序的①行代碼處直接打開一個URLConnection,但系統會為打開該URLConnection時使用代理伺服器。

運行上面程序,將會看到程序長時間等待,因為192.168.0.96通常並不是有效的代理伺服器(當然,如果讀者運行的機器恰好可以使用地址為192.168.0.96的代理伺服器又另當別論)。

系統提供了默認的ProxySelector子類作為代理選擇器,開發者可以實現自己的代理選擇器,程序可以通過繼承ProxySelector來實現自己的代理選擇器。繼承ProxySelector需要重寫兩個方法:

List<Proxy> select(URI uri):實現該方法讓代理選擇器根據不同的URI來使用不同的代理伺服器,該方法就是代理選擇器管理網路連接使用代理伺服器的關鍵。

connectFailed(URI uri, SocketAddress sa, IOException ioe):當系統通過默認的代理伺服器建立連接失敗後,代理選擇器將會自動調用該方法。通過重寫該方法可以對連接代理伺服器失敗的情形進行處理。

系統默認的代理伺服器選擇器也重寫了connectFailed方法,它重寫該方法的處理策略是:當系統設置的代理伺服器失敗時,默認代理選擇器將會採用直連的方式連接遠程資源,所以當運行上面程序等待了足夠長時間時,程序依然可以列印出該遠程資源的所有內容。

② Java怎麼設置代理來訪問網路

你的問題應該是:在java中通過編程設置代理伺服器並訪問網路,現在作答如下:

1,講解一下基礎知識:
HTTP:是應用層協議,是基於傳輸層協議的。
TCP: 是傳輸層協議,是基於網路層協議的。
IP: 是網路層協議。
一個TCP的連接要進行三次握手(就像轉戶口一樣,不詳說),HTTP只是一個應用協議,也就是相當於一個自定義協議,即其沒有對底層的傳輸方式進行干涉,只是對數據內容格式進行了定義。

2,我們再說說HTTP代理,從上可以理解,HTTP代理伺服器就是這樣一台機器:你把所有的HTTP請求都發到這個 HTTP代理伺服器,然後這個HTTP代理伺服器請求你要訪問的最終地址,把響應回傳給你。這里還要注意它代理的是HTTP協議,而HTTP又是基於 TCP的,也就是說這個伺服器代理的是指定HTTP內容格式的TCP連接。再說下去也沒意思了,看以下代碼:
//以下地址是代理伺服器的地址
Socket socket = new Socket("10.1.2.188", 80);
//寫與的內容就是遵循HTTP請求協議格式的內容,請求網路
socket.getOutputStream().write(new String("GET http://www..com/ HTTP/1.1\r\n\r\n").getBytes());
byte[] bs = new byte[1024];
InputStream is = socket.getInputStream();
int i;
while ((i = is.read(bs)) > 0) {
System.out.println(new String(bs, 0, i));
}
is.close();
3,當然在Java中,有Proxy代理上網的使用,此時使用URL(HTTP)就不涉及Socket(TCP)了,看如下代碼
//設置代理
System.setProperty("http.proxySet", "true");
System.setProperty("http.proxyHost", "10.1.2.188");
System.setProperty("http.proxyPort", "80");

//直接訪問目的地址
URL url = new URL("http://www..com");
URLConnection con = url.openConnection();
InputStreamReader isr = new InputStreamReader(con.getInputStream());
char[] cs = new char[1024];
int i = 0;
while ((i = isr.read(cs)) > 0) {
System.out.println(new String(cs, 0, i));
}
isr.close();

③ 想用java編寫個代理伺服器,求具體一些思路,詳細一些,謝謝

在編寫代理伺服器之前,首先應該明白一點,Java的代理機制,如圖所示:

那麼Java就處於中間這層代理伺服器,代理伺服器所作的事情如下:
1、接收客戶端請求,進行處理,然後發送給服務端
2、接收服務端響應,進行處理,然後發送給客戶端
這樣,就更清晰了,Java提供了代理的API為,java.net.Proxy類。此類表示代理設置,通常為類型(http、socks)和套接字地址。Proxy 是不可變對象。

也就是說Java可以製作高級協議的代理,如 HTTP 或 FTP。也可以製作SOCKS(V4 或 V5)代理。
首先,使用到了URL類,HttpURLConnection類及其我們的代理類Proxy類。他們都位於java.net包中。

第一步:生成代理,指定埠為8888:

第二步:使用URLConnection類進行連接www.moonsos.com

第三步:打開URL,並且讀取HTML源碼

④ 如何用java使用代理

Java中,使用proxy是通過設置java環境變數來實現的,也就是JVM的系統屬性。

我們需要設置三個屬性,proxySet proxyHost和proxyPort。
proxySet 是個boolean類型的,可以設置為true或者false,true代表使用代理伺服器。
proxyHost 是代理伺服器的IP地址
proxyPort 是代理伺服器的埠地址。

我們有兩種方法設置這種系統屬性,
一種是命令行下運行Java程序的時候,通過參數付值
一種是在java源程序中設置。

第一種方法的格式如下:
java -DproxySet=true -DproxyHost=myProxyServer.come -DproxyPort=80 MyJavaApp

第二種方法,就是直接在源程序中通過系統屬性來寫,如下:
import java.util.Properties;
...
...

strProxy="221.15.5.67";
strPort="8080";

Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost",strProxy);
systemProperties.setProperty("http.proxyPort",strPort);
....

JDK1.3以上版本,只要設置了proxyHost和proxyPort就不用寫proxySet了。

那麼反過來,顯示這些系統屬性,就可以看到有沒有使用代理了。

閱讀全文

與java代理設置怎麼設置相關的資料

熱點內容
銀川交易市場在哪裡 瀏覽:782
如何保護數據信息 瀏覽:247
安居客交易經紀人怎麼弄 瀏覽:962
湘典檳榔來了代理得多少錢 瀏覽:269
ups市場如何 瀏覽:367
什麼地方可以做茶葉代理 瀏覽:216
機器人代理商是什麼 瀏覽:850
dma傳輸數據的速度由什麼決定 瀏覽:173
資料庫審計有哪些工具 瀏覽:200
高淳區五金舊貨市場在什麼位置 瀏覽:591
生物性存貨監盤程序包括什麼 瀏覽:820
微信小程序中國移動怎麼用 瀏覽:169
wps中的數據驗證在什麼位置 瀏覽:920
電腦轉轉交易記錄怎麼看 瀏覽:501
股票板塊信息怎麼查 瀏覽:493
溫州男裝市場哪個最好 瀏覽:792
產權界定如何降低交易費用 瀏覽:895
古董交易市場哪個好 瀏覽:599
房山哪裡有農貿菜市場 瀏覽:244
神武4哪些可以交易 瀏覽:268