用 java 檢測主機連網狀態--CTO

通過幾天努力終於把那個問題給解決了,就是用java 檢測本機的連網狀態,當網絡中斷時讓檢測網絡,如果連接上網絡,便又繼續下面的工作.以下是我寫的一個類,朋友們可以參考一下                                                                                        清單一:URLAvailability.java

package xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

import java.net.HttpURLConnection;
import java.net.URL;
import java.net.UnknownHostException;
import java.text.DateFormat;
import java.util.Date;

import org.apache.log4j.Logger;

/**
 * 
 * 項目名稱: xxxxxxxxxx* 

* 功能模塊名稱: *

* 文件名稱爲:URLAvailability.java *

* 文件功能簡述: xxxxxxxxxxxxxxxxxxxxxxxxxx *

* 文件創建人:ChenTao * @author ChenTao * @version v1.0 * @time 2008-5-31上午10:00:35 * @copyright xxxxxxxxxxxxx */ @SuppressWarnings("unused") public class URLAvailability { private static Logger logger = Logger.getLogger(URLAvailability.class); private static URL urlStr; private static HttpURLConnection connection; private static int state = -1; private static String succ; private static boolean isCon = false; private String url; private String closeTime = null; private int status = 0; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public static String getSucc() { return succ; } public static void setSucc(String succ) { URLAvailability.succ = succ; } /** * 功能描述 : 檢查URL是否可用 * * @param url * 指定檢查的網絡地址 * * @return String */ public synchronized static String isConnect(String url) { state = -1; succ = null; if (url == null || url.length() <= 0) { return succ; } new URLAvailability().connectState(url); return succ; } /** * 功能描述 : 檢測當前網絡是否斷開 或 URL是否可連接, * 如果網絡沒斷開,最多連接網絡 5 次, 如果 5 次都不成功說明該地址不存在或視爲無效地址. * * @param url * 指定URL網絡地址 * * @return void */ private synchronized void connectState(String url) { this.url = url; int counts = 0; while (counts < 5) { try { urlStr = new URL(this.getUrl()); connection = (HttpURLConnection) urlStr.openConnection(); state = connection.getResponseCode(); if (state == 200) { succ = connection.getURL().toString(); } break; } catch (UnknownHostException ex) { if(this.closeTime == null){ DateFormat df = DateFormat.getDateTimeInstance(); closeTime = df.format(new Date()); logger.error("網絡連接狀態已斷開,請檢查網絡連接設備"); logger.info("斷開時間 : " + this.closeTime); logger.error("程序開始執行每三分鐘檢測一次網絡"); } try { status ++; logger.info("開始第" + status + " 次檢測網絡狀態是否可連接"); Thread.sleep(180000); } catch (InterruptedException e) { } this.connectState(this.getUrl()); } catch (Exception ex) { counts++; continue; } if(status != 0){ DateFormat df = DateFormat.getDateTimeInstance(); closeTime = df.format(new Date()); logger.info("網絡成功連接"); } } } } 大家看到上面我 cache 了UnknownHostException 異常,這個意思是在調用遠程主機發生的異常,我們只需

要 cache 這個異常就搞定了,不信可試試把網線斷開後看看會發生什麼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章