第一种方式:利用java运行时:
在windows平台上,上面代码没有为,ping ip 会结束,而在linux环境中ping命令,ping不通时,
会卡住,ping通,会不定的输出信息,考虑用另一种方式socket。 下载
第二种方式socket:
- /**
- * test network
- * @param ip
- */
- private void getNetworkState(String ip) {
- Runtime runtime = Runtime.getRuntime();
- try {
- log.info("=================正在测试网络连通性ip:"+ip);
- Process process = runtime.exec("ping " +ip);
- InputStream iStream = process.getInputStream();
- InputStreamReader iSReader = new InputStreamReader(iStream,"UTF-8");
- BufferedReader bReader = new BufferedReader(iSReader);
- String line = null;
- StringBuffer sb = new StringBuffer();
- while ((line = bReader.readLine()) != null) {
- sb.append(line);
- }
- iStream.close();
- iSReader.close();
- bReader.close();
- String result = new String(sb.toString().getBytes("UTF-8"));
- log.info("ping result:"+result);
- if (!StringUtils.isBlank(result)) {
- if (result.indexOf("TTL") > 0 || result.indexOf("ttl") > 0) {
- log.info("网络正常,时间: " + TimeUtil.getCurDate("yyyy-mm-dd hh:mm:ss"));
- } else {
- log.info("网络断开,时间 :" + TimeUtil.getCurDate("yyyy-mm-dd hh:mm:ss"));
- }
- }
- } catch (Exception e) {
- log.error("网络异常:"+e.getMessage());
- e.printStackTrace();
- }
- }
在windows平台上,上面代码没有为,ping ip 会结束,而在linux环境中ping命令,ping不通时,
会卡住,ping通,会不定的输出信息,考虑用另一种方式socket。 下载
第二种方式socket:
- package com.util.network;
- import java.io.IOException;
- import java.net.InetAddress;
- import java.net.InetSocketAddress;
- import java.net.NetworkInterface;
- import java.net.Socket;
- import java.net.SocketAddress;
- import java.net.SocketException;
- import java.net.UnknownHostException;
- import java.util.Enumeration;
- import org.apache.commons.lang.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- /**
- * 测试网络连通性
- *
- * @author donald
- * 下载
- */
- public class NetworkHelper {
- private static Logger log = LoggerFactory.getLogger(NetworkHelper.class);
- private static NetworkHelper instance = null;
- public static synchronized NetworkHelper getInstance(){