基于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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java判断Long类型的方法和实例代码

    java判断是否是Long类型 1.首先定义一个getType方法,接收一个Object类型的参数: 2.然后使用getClass方法获取class类型的对象: 3.再使用toString()方法转为字符串,并使用substring截取字符串获得变量类型: 4.最后根据变量类型和Long字符串进行对比即可 public class HelloWorld { public static void main(String[] args) { Boolean res = getType(1232343

  • java判断字符串包含某个字符的实例方法

    java判断字符串是否包含某个字符的方法: 一.contains方法 1:描述 java.lang.String.contains() 方法返回true,当且仅当此字符串包含指定的char值序列 2:声明 public boolean contains(CharSequence s) 3:返回值 如果此字符串包含返回true,否则返回false. 4:实例 public static void main(String[] args) { String str = "abc"; bool

  • java判断一个字符串是否是小数的方法

    函数介绍: matches() 方法用于检测字符串是否匹配给定的正则表达式. 语法: public boolean matches(String regex) 返回值: 在字符串匹配给定的正则表达式时,返回 true. StringUtils.isBlank(String str)判断某字符串是否为空或长度为0或由空白符(whitespace) 构成. 示例如下: /** * 判断是否是整数或者是小数 * @param str * @return true:是,false不是 */ privat

  • Java判断字符串回文的代码实例

    首先,回文是指类似于"12345","abcdcba"的形式,即正念和反念都是一样的字符串 判断字符串是否是回文,这边介绍2种办法 1.将字符串翻转,判断翻转后的字符串和原字符串是否相等 public static void main(String[] args) { String s="abcdcba"; // 用StringBuilder的reverse方法将字符串反转 StringBuilder sb=new StringBuilder(s

  • Java后台判断ajax请求及处理过程详解

    一.问题描述: 当访问一个需要登录的页面时,会有过滤器或者拦截器进行过滤拦截,如果用户没有登录,则跳转到登录页面. 当用户已经登录进入系统后,然后长时间没操作,等到session过期后,再点击一个ajax请求操作时,这时再跳转到登录页面就不合适了,因为这是ajax操作,拦截后跳到页面返回的结果js识别不了. 二.解决方法: 在过滤器或者拦截器上做识别,针对页面跳转请求和ajax请求分别处理. 页面跳转的不再详说,现在说的是ajax请求. 直接贴代码: import java.io.IOExcep

  • Java判断用户名和密码是否符合要求过程详解

    这篇文章主要介绍了Java判断用户名和密码过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 假设在某仓库管理系统的登录界面中需要输入用户名和密码,其中用户名只能由 6~10 位数字组成,密码只能有 6 位,任何不符合用户名或者密码要求的情况都视为异常,并且需要捕获并处理该异常. 下面使用自定义异常类来完成对用户登录信息的验证功能,实现步骤如下. (1) 编写自定义异常类 LoginException,该类继承自 Exception.在 L

  • java正则表达式获取大括号小括号内容并判断数字和小数亲测可用

     获取大括号小括号内容 项目开发用到了,暂做个简单记录 private static String regex = "\\{([^}]*)\\}";//匹配大括号 private static String regexx = "\\(([^}]*)\\)";//匹配小括号 public static void main(String[] args) { String dakuohao = "{a+b}={c+d}>{d}"; Pattern

  • java判断class子类或父类的实例方法

    我们首先看代码: Class c = ArrayList.class; c.isPrimitive(); //判断c是否为基本数据类型 c.isAssignableFrom(List.class); //判断c是否是List类的子类或父类 c.getGenericType(); //得到泛型类型 实例:通过反射得到List<T> 集合中的泛型类型 package com.zf.target; import java.lang.reflect.Field; import java.lang.re

  • 基于Java判断网络是否正常代码实例

    判断网络是否正常使用 代码如下 /** * 判断网络是否正常 * @return */ public static boolean isConnect(String ipPath){ //定义其返回的状态,默认为false,网络不正常 boolean connect = false; /** * 用Runtime.getRuntime().exec()来调用系统外部的某个程序, * 他会生成一个新的进程去运行调用的程序. * 此方法返回一个java.lang.Process对象, * 该对象可以

  • 基于python判断目录或者文件代码实例

    这篇文章主要介绍了基于python判断目录或者文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1. 判断目录是否存在 'isdir',删除目录时只有该目录为空才可以 'rmdir' import os if(os.path.isdir('D:/Python_workspace/spyder_space/test_各种功能/哈哈哈哈')): #判断目录是否存在 print('yes') os.rmdir('D:/Python_work

  • 基于Java创建一个订单类代码实例

    这篇文章主要介绍了基于Java创建一个订单类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需求描述 定义一个类,描述订单信息 订单id 订单所属用户(用户对象) 订单所包含的商品(不定数量个商品对象) 订单总金额 订单应付金额: 总金额500~1000,打折85折 总金额1000~1500,打折80折 总金额1500~2000,打折70折 总金额超过2000,打折65折 在此基础上,还要看用户的vip等级 用户vip等级为:一般会员,

  • 基于Java Callable接口实现线程代码实例

    实现Callable接口(jdk8新特性) 可以获得线程的返回值 *前两种方式没有返回值,因为run方法返回void 创建一个未来任务类对象 Futrue task = new Future(Callable<>);重写call()方法 可以使用匿名内部类方式 task.get()方法获取线程返回结果 get方法执行会导致当前方法阻塞 效率较低 代码如下 import java.util.concurrent.Callable; import java.util.concurrent.Exec

  • 基于java查找最长字符串代码实例

    题目:编写程序,针对输入的N个字符串,输出其中最长的字符串 输入样例: 4 zhaoming zhangming sunming liming 输出样例: 最长的字符串:zhangming 代码如下 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); int

  • Java判断字符串是否含有乱码实例代码

    具体代码如下所示: /** * 判断字符是否是中文 * * @param c 字符 * @return 是否是中文 */ public static boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.C

  • java基于poi导出excel透视表代码实例

    这篇文章主要介绍了java基于poi导出excel透视表代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从前,我是一个前端程序猿,怀着对打通任(前)督(后)二(开)脉(发)的梦想转了后端,自学两礼拜java+spring全家桶,直接上项目实战.最近接到一需求:将业务数据导出一张透视表. 需求开发完成已近有一段时间了,甲方的大爷大妈,爷爷奶奶们也都用的很开心,我也很开心,于是就心想咱学了也不能白学,所以写下这篇随笔. 先看下用easypo

  • java判断各类型字符个数实例代码

    目录 描述 输入描述: 输出描述: 描述 输入一行字符串,分别统计出其中英文字母.空格.数字和其它字符的个数 输入描述: 控制台随机输入一串字符串 输出描述: 输出字符串中包含的英文字母个数,数字个数,空格个数,其它字符个数(格式为:英文字母x数字x空格x其他x),预设代码中已给出输出. import java.util.Scanner; public class Main { public static void main(String[] args) { int numbers = 0; i

  • 基于Java中UDP的广播形式(实例讲解)

    UDP---用户数据报协议,是一个简单的面向数据报的运输层协议.UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地 ,也不能保证数据包到达的顺序.由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快. 在Java中UDP的实现: * UDP: * 客户端: * 1.创建用于UDP通信的socket对象---DatagramSocket(用于UDP数据的发送和接收)---数据报套接字 * 2.准备数据,封装包

  • Java实现斗地主最简代码实例

    案例说明:使用Java实现简单的斗地主洗牌发牌的操作: 具体规则: 共有54张牌,顺序打乱: 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后留三张为底牌(地主牌). 具体代码实现步骤: 扑克牌准备操作 import java.util.ArrayList; import java.util.Collections; import java.util.List; public class PokerGame { public static void main(String[] args) {

随机推荐