『壹』 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方法,它重寫該方法的處理策略是:當系統設置的代理伺服器失敗時,默認代理選擇器將會採用直連的方式連接遠程資源,所以當運行上面程序等待了足夠長時間時,程序依然可以列印出該遠程資源的所有內容。
『貳』 如何突破教育網流量限制
有個這樣的辦法,在你的網路電視上的設置為本地區域網共享播放,只要你看的台別人也在看 那麼你就不需要通過INTERNET流量來看了!會從網內正在看這個台的機器上共享看!如果不行,你去下個東菱ADSL密碼終結者 掃描別人的帳號密碼 用他們的帳號密碼看 錢他們付!
如果找不到,那麼去找個叫代理伺服器嗅探工具,自己不撥號 通過他們做代理去看!
『叄』 java多線程訪問被限制問,高分求助 高手給個思路或方法
應該是網路的防止惡意攻擊功能起作用了;在HttpClient 請求時,模擬瀏覽器和客戶端IP地址,要努力偽裝成像人在發出Url請求。
『肆』 Java web 怎樣限制同一個ip地址訪問網頁查詢次數,每天只允許一個IP查詢一次,怎麼實現
用你這種方式也可以實現,但是不能100%控制,因為代理伺服器什麼的可以隱藏IP
不過可以控制絕大多數的人吧
用Map去記錄IP的話,如果訪問量很大,後台伺服器內存也會加大,
建議用資料庫去記錄
寫個攔截器或者過慮器,訪問的時候獲取客戶端IP存到資料庫,之後只需要查一下資料庫就可以了
資料庫可以寫個Job,24小時執行一次,清除24小時以前的數據即可實現你的需求了.
很簡單的
『伍』 求java網路高手,tcp最大連接問題
網路上盛傳的那個改連接數,我認為基本上沒用,關鍵是你要了解他的原理,
它的作用是改變單位時間內的並發連接數,也就是說你寫個程序,想要在1秒內連接超過50(假設)此連接,是不被允許的,你只能達到10個,我認為一般應用足夠了,比如下載應用,1秒不夠,稍後軟體都會重試,並不會影響你的下載速度,像windows 2003這樣的操作系統,是不會做此限制的,作為伺服器,它的目標就是提高網路吞吐量。
這樣解釋能明白否?