zoukankan      html  css  js  c++  java
  • Java判断网络是否正常

    判断网络是否正常使用

    •       /**
           * 判断网络是否正常
           * @return
           */
          public static boolean isConnect(String ipPath){
              //定义其返回的状态,默认为false,网络不正常
              boolean connect = false;
              /**
               * 用Runtime.getRuntime().exec()来调用系统外部的某个程序,
               * 他会生成一个新的进程去运行调用的程序。
               * 此方法返回一个java.lang.Process对象,
               * 该对象可以得到之前开启的进程的运行结果,
               * 还可以操作进程的输入输出流。
               */
      
              Runtime runtime = Runtime.getRuntime();
              Process process;
              try {
                  process = runtime.exec("ping " + ipPath);
                  InputStream is = process.getInputStream();
                  InputStreamReader isr = new InputStreamReader(is,"GBK");
                  BufferedReader br = new BufferedReader(isr);
                  String line = null;
                  StringBuffer sb = new StringBuffer();
                  while ((line = br.readLine()) != null) {
                      sb.append(line);
                  }
                  System.out.println("返回值为:"+sb);
                  is.close();
                  isr.close();
                  br.close();
      
                  if (null != sb && !sb.toString().equals("")) {
                      String logString = "";
                      if (sb.toString().indexOf("TTL") > 0) {
                          // 网络畅通
                          connect = true;
                      } else {
                          // 网络不畅通
                          connect = false;
                      }
                  }
              } catch (IOException e) {
                  e.printStackTrace();
              }
              return connect;
          }

    TTL:生存时间
    指定数据报被路由器丢弃之前允许通过的网段数量。
    TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,要求路由器至少将 TTL 减小 1。
    使用PING时涉及到的 ICMP 报文类型
    一个为ICMP请求回显(ICMP Echo Request)
    一个为ICMP回显应答(ICMP Echo Reply)
    TTL 字段值可以帮助我们识别操作系统类型

    测试

     
       public static void main(String[] args) {
            System.out.println(HttpUtil.isConnect("220.181.111.188"));
    
        }

    控制台显示

    返回值为:正在 Ping 220.181.111.188
    具有 32 字节的数据:
    来自 220.181.111.188 的回复: 字节=32 时间=23ms TTL=53
    来自 220.181.111.188 的回复: 字节=32 时间=23ms TTL=53
    来自 220.181.111.188 的回复: 字节=32 时间=24ms TTL=53
    来自 220.181.111.188 的回复: 字节=32 时间=23ms 
    TTL=53220.181.111.188 的 Ping 统计信息:    
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
    往返行程的估计时间(以毫秒为单位):    
    最短 = 23ms,最长 = 24ms,平均 = 23ms
    
    true
    
    Process finished with exit code 0

     公众号:摘星族

  • 相关阅读:
    Windows 7/8 删除IE临时文件,包括Cookie的批处理
    SQL Server 2005/2008/2008R2/2012 删除登录名的步骤
    NetAdvangate Infragisticss 控件在工程移动到别的机器上,引用失效问题
    如果一个主板有多个BIOS更新包,则只需要更新最新的包即可。
    Intel存储技术软件的兼容性问题,造成磁盘IO不稳,卡死系统
    汤姆大叔JavaCript系列4阅读笔记
    IDL(接口描述语言)
    document.defaultView.getComputedStyle() 的使用
    汤姆大叔JavaCript系列1阅读笔记
    汤姆大叔JavaCript系列10阅读笔记
  • 原文地址:https://www.cnblogs.com/zhaixingzhu/p/12562954.html
Copyright © 2011-2022 走看看