Java测试网络连通性

第一种方式:利用java运行时: 
Java代码    收藏代码
  1.  /** 
  2.  * test network 
  3.  * @param ip 
  4.  */  
  5. private void getNetworkState(String ip) {  
  6.     Runtime runtime = Runtime.getRuntime();  
  7.     try {  
  8.         log.info("=================正在测试网络连通性ip:"+ip);  
  9.         Process process = runtime.exec("ping " +ip);  
  10.         InputStream iStream = process.getInputStream();  
  11.         InputStreamReader iSReader = new InputStreamReader(iStream,"UTF-8");  
  12.         BufferedReader bReader = new BufferedReader(iSReader);  
  13.         String line = null;  
  14.         StringBuffer sb = new StringBuffer();  
  15.         while ((line = bReader.readLine()) != null) {  
  16.             sb.append(line);  
  17.         }  
  18.         iStream.close();  
  19.         iSReader.close();  
  20.         bReader.close();  
  21.         String result  = new String(sb.toString().getBytes("UTF-8"));  
  22.         log.info("ping result:"+result);  
  23.         if (!StringUtils.isBlank(result)) {  
  24.             if (result.indexOf("TTL") > 0 || result.indexOf("ttl") > 0) {  
  25.                 log.info("网络正常,时间: " + TimeUtil.getCurDate("yyyy-mm-dd hh:mm:ss"));           
  26.             } else {  
  27.                 log.info("网络断开,时间 :" + TimeUtil.getCurDate("yyyy-mm-dd hh:mm:ss"));  
  28.               
  29.             }  
  30.         }  
  31.     } catch (Exception e) {  
  32.         log.error("网络异常:"+e.getMessage());  
  33.         e.printStackTrace();  
  34.     }  
  35. }  

在windows平台上,上面代码没有为,ping ip 会结束,而在linux环境中ping命令,ping不通时, 
会卡住,ping通,会不定的输出信息,考虑用另一种方式socket。 下载

第二种方式socket: 
Java代码    收藏代码
  1. package com.util.network;  
  2.   
  3. import java.io.IOException;  
  4. import java.net.InetAddress;  
  5. import java.net.InetSocketAddress;  
  6. import java.net.NetworkInterface;  
  7. import java.net.Socket;  
  8. import java.net.SocketAddress;  
  9. import java.net.SocketException;  
  10. import java.net.UnknownHostException;  
  11. import java.util.Enumeration;  
  12.   
  13. import org.apache.commons.lang.StringUtils;  
  14. import org.slf4j.Logger;  
  15. import org.slf4j.LoggerFactory;  
  16.   
  17. /** 
  18.  * 测试网络连通性 
  19.  *  
  20.  * @author donald 
  21.  *  下载
  22.  */  
  23. public class NetworkHelper {  
  24.     private static Logger log = LoggerFactory.getLogger(NetworkHelper.class);  
  25.     private static NetworkHelper instance = null;  
  26.     public static synchronized NetworkHelper getInstance(){  
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用byte的数据包可以通过发送和接收数据来测试本机与主机之间的连通性。例如,可以使用Java的Socket类来实现此功能。 首先,需要创建一个ServerSocket对象作为主机端,用于监听连接请求。然后,创建一个Socket对象作为本机端,用于发送数据包。在本机端,可以使用Socket的getOutputStream方法获取输出流,然后使用DataOutputStream将byte数据包写入输出流。 在主机端,当接收到连接请求后,可以使用ServerSocket的accept方法获取一个Socket对象,用于处理客户端的连接。在主机端使用Socket的getInputStream方法获取输入流,然后使用DataInputStream读取byte数据包。 在本机端发送数据包后,主机端可以使用DataInputStream的readByte方法逐字节读取数据包,直到读取完所有字节。在读取过程中,可以进行相关的判断和操作,如检查数据包的完整性、验证数据内容等。 通过以上操作,可以测试本机与主机的连通性。如果数据包能够成功发送和接收,说明本机与主机之间的连通性正常;如果发送或接收失败,可能存在网络连接问题或主机不可达的情况。 需要注意的是,在使用byte数据包进行连通性测试时,需要确保两端的网络连接正常,并且本机和主机的IP地址、端口等相关参数设置正确。 总之,使用byte数据包可以通过发送和接收数据来测试本机与主机之间的连通性,以验证网络连接的可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值