您的位置:首页 > 编程语言 > Java开发

用 java 检测主机连网状态--CTO

2008-06-04 21:55 267 查看
通过几天努力终于把那个问题给解决了,就是用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 这个异常就搞定了,不信可试试把网线断开后看看会发生什么
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: