java 测试网络_java如何测试网络连通性

本文介绍了两种Java测试网络连通性的方法:一种是利用Runtime执行ping命令,另一种是使用Socket进行网络连接测试。这两种方法分别适用于不同的操作系统环境,并提供了详细的代码示例。
摘要由CSDN通过智能技术生成

本文实例为大家分享了Java测试网络连通性的方法,供大家参考,具体内容如下

第一种方式:利用java运行时:

Java代码

/**

* 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:Java代码

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(){ <

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值