java检查服务器的连通两种方法代码分享

 更新时间:2017年11月20日 17:15:05   作者:dns007  
这篇文章主要介绍了java检查服务器的连通两种方法代码分享,涉及ping的介绍以及检查服务器连通的两种方法代码示例,具有一定参考价值,需要的朋友可以了解下。

首先要了解一下ping的内容。

概述

PING (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP(Internet Control Messages Protocol)即因特网信报控制协议;回声请求消息给目的地并报告是否收到所希望的ICMPecho (ICMP回声应答)。它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少。

ping指的是端对端连通,通常用来作为可用性的检查, 但是某些病毒木马会强行大量远程执行ping命令抢占你的网络资源,导致系统变慢,网速变慢。严禁ping入侵作为大多数防火墙的一个基本功能提供给用户进行选择。通常的情况下你如果不用作服务器或者进行网络测试,可以放心的选中它,保护你的电脑。

通常检查服务器连通 使用ping命令,java代码实现如下:

方法一:

JAVA里的PING是在JDK 1.5后用了新的函数isreachable()函数去实现,但是结果通常返回false

原因:此方法用于测试是否可以达到该地址。实现尽最大努力试图到达主机,但防火墙和服务器配置可能阻塞请求,使其在某些特定的端口可以访问时处于不可到达状态。如果可以获得权限,则典型实现将使用 ICMP ECHO REQUEST;否则它将试图在目标主机的端口 7 (Echo) 上建立 TCP 连接。

public static boolean isOnline(String hostname) { 
    try { 
      InetAddress ia; 
      boolean isonline = false; 
      ia = InetAddress.getByName(hostname);// 例如:www.baidu.com 
      isonline = ia.isReachable(1500); //超时时间1.5秒 
      return isonline; 
    } catch (UnknownHostException e) { 
      // TODO Auto-generated catch block 
      System.out.println("address:" + hostname + " is not unknown"); 
    } catch (IOException e) { 
      // TODO Auto-generated catch block 
      System.out.println("address:" + hostname + " is not reachable"); 
    } 
    return false; 
  } 

方法二(推荐):

使用socket 对端口做TELNET操作, 结果比较准确

public static boolean isOnline(String hostname, int port) { 
    Socket server = null; 
    try { 
      server = new Socket(); 
      InetSocketAddress address = new InetSocketAddress(hostname, port);//例如 www.baidu.com 80 
      server.connect(address, 3000); 
      System.out.println("ok!"); 
      return true; 
    } 
    catch (UnknownHostException e) { 
      System.out.println("wrong!"); 
      e.printStackTrace(); 
    } catch (IOException e) { 
      System.out.println("wrong"); 
      e.printStackTrace(); 
    } 
    return false; 
  } 

总结

以上就是本文关于java检查服务器的连通两种方法代码分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

Java编程利用socket多线程访问服务器文件代码示例

Java多线程编程实现socket通信示例代码

如有不足之处,欢迎留言指出。

相关文章

  • Java代码编译和反编译的那些事儿

    Java代码编译和反编译的那些事儿

    这篇文章主要给大家介绍了关于Java代码编译和反编译的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • 详解spring cloud构建微服务架构的网关(API GateWay)

    详解spring cloud构建微服务架构的网关(API GateWay)

    这篇文章主要介绍了详解spring cloud构建微服务架构的网关(API GateWay),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • java 使用线程做的一个简单的ATM存取款实例代码

    java 使用线程做的一个简单的ATM存取款实例代码

    线程 Thread 类,和 Runable 接口 比较两者的特点和应用领域.可以,直接继承线程Thread类。该方法编写简单,可以直接操作线程,适用于单重继承情况,因而不能在继承其他类,下面我们来看一个实例
    2013-08-08
  • Java使用Thread和Runnable的线程实现方法比较

    Java使用Thread和Runnable的线程实现方法比较

    这篇文章主要介绍了Java使用Thread和Runnable的线程实现方法,结合实例形式对比分析了Java使用Thread和Runnable实现与使用线程的相关操作技巧,需要的朋友可以参考下
    2019-10-10
  • SpringBoot关于自动注入mapper为空的坑及解决

    SpringBoot关于自动注入mapper为空的坑及解决

    这篇文章主要介绍了SpringBoot关于自动注入mapper为空的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java 用Prometheus搭建实时监控系统过程详解

    Java 用Prometheus搭建实时监控系统过程详解

    这篇文章主要介绍了用Prometheus搭建实时监控系统过程详解之上帝之火,普罗米修斯的崛起,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java中java.lang.ClassCastException异常原因及解决方法

    Java中java.lang.ClassCastException异常原因及解决方法

    大家好,本篇文章主要讲的是Java中java.lang.ClassCastException异常原因及解决方法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • 深入了解java-jwt生成与校验

    深入了解java-jwt生成与校验

    这篇文章主要介绍了深入了解java-jwt生成与校验,Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景。,需要的朋友可以参考下
    2019-06-06
  • 100-200之间所有素数求和程序代码(二个版本)

    100-200之间所有素数求和程序代码(二个版本)

    写一个求100-200之间素数,并求和的程序,大家参考使用吧
    2013-11-11
  • JVM中堆内存和栈内存的区别

    JVM中堆内存和栈内存的区别

    本文主要介绍了JVM中堆内存和栈内存的区别,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02

最新评论