setConnectTimeout無效果,setconnecttimeout無

來源:互聯網
上載者:User

setConnectTimeout無效果,setconnecttimeout無
在項目我碰到一個問題就是需要判斷公網和專網,那麼我是這麼寫一個方法的,方法代碼如下:

// 判斷是否能夠訪問外網public static boolean openUrl() {HttpURLConnection conn = null;String myString = "";InputStream is = null;BufferedInputStream bis = null;try {URL url = new URL("http://www.baidu.com/index.html");conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(1500);conn.setRequestMethod("GET"); // 設定請求方式conn.connect(); // 建立到遠程對象的實際串連if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {System.out.println("網路錯誤異常!!!!");return false;}is = conn.getInputStream();bis = new BufferedInputStream(is);// 用ByteArrayBuffer緩衝ByteArrayBuffer baf = new ByteArrayBuffer(50);int current = 0;while ((current = bis.read()) != -1) {baf.append((byte) current);}myString = EncodingUtils.getString(baf.toByteArray(), "UTF-8");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();return false;} finally {try {bis.close();is.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}if (conn != null) {conn.disconnect(); // 中斷串連}}if (myString.indexOf("baidu.com") > -1) {return true;} else {return false;}}
在代碼中我們可以看到我設定了連線逾時的時間為1500毫秒
conn.setConnectTimeout(1500);

,但是實際的情況是當時專網的時候(不能訪問百度)根本不是1.5秒拋出逾時的異常,這個問題困擾2天,

也在網上查詢很多資料,結果有人說還要設定讀取逾時conn.setReadTimeout(1500);結果一試還是不行,

就再找發現有人在使用的情況下查看控制台發現訪問1500毫秒之後系統會自動的嘗試很多次(集體多少次沒有算)

導致很長時間才拋出訪問逾時異常,這樣導致我們看到的現象就是我設定了1500毫秒逾時結果幾分鐘才給我逾時異常,感覺設定的逾時時間沒有效果。


那麼說一下我的解決方案,我個人測試通過,如果有好的方法請指出:

因為系統會自動的嘗試很多次逾時之後才給你拋出異常,所以我把這個異常逾時時間設定短一點如我設定500毫秒,公網的情況下能正常的訪問,專網也能很快的拋出異常達到了我的目的。

另外判斷公網和專網的另一種方法就是用ping ,記得要起一個服務區處理ping,關閉之後要殺死改進程,否則第二次ping可能就阻塞了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.