Java 程序检查远程服务器状态
通常我们以命令的方式判断远程服务器是否正常运行有两种方式,ping 或 telnet 一个远程端口。假设我们要检查的远程服务器都是 Linux 系统。
从 JDK 1.5 以后, InetAddress 类提供一个 isReachable() 方法,用来判断远程主机是否可以到达,这个方法的使用的时候一定要注意以下几点:如果客户端是 Windows 系统,JDK 不会向服务器发送 ICMP 的请求,因为 Windows 没有提供可被调用的底层接口,这时 JDK 会自动向服务器的 Port 7 发起一个 Socket 连接,如果连接也失败,则认为服务器无法到达,返回False。 注意在客户端执行此程序无须管理员用户,但要求服务器端的防火墙放行 Port 7 的访问(大部分 Linux 发行版此端口默认是禁止访问的)。
如果客户端是 Linux 系统, JDK 可以使用底层接口来向服务器发送 ICMP 请求,但执行此程序的用户必须拥有 root 权限,否则 JDK 也会像 Widnows 一样以 Socket 方式进行验证,即向服务器的 Port 7 发起一个 Socket 连接来进行判断。
如果不用 isReachable(),比较简单的方法是 Socket 连接一个指定的端口,但前提是确定此端口可以被访问,如 Web Server 的 80 端口。这种方式对用户权限没有要求,唯一要注意的是,如果无法连接此端口,有可能只是应用服务出现问题,不一定是服务器无法连接。
private static boolean isReachable(String ip, String port, int timeout) {
|
Java 程序检查远程服务器状态的更多相关文章
- 使用nodejs和Java访问远程服务器的服务
既然这篇文章用的是nodejs和Java访问远程服务器的服务,那么咱们先用另一门编程语言,SAP的ABAP(我日常工作使用得最多的编程语言)来开发一个服务吧. 这是我用ABAP编程语言实现服务的类:Z ...
- java ssh远程服务器并执行多条shell命令
java ssh远程服务器并执行多条命令 import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...
- java获取远程服务器应用程序服务状态
package lct.conference.test; import java.io.BufferedReader; import java.io.IOException; import java. ...
- java从远程服务器获取PDF文件并后台打印(使用pdfFox)
一.java原生方式打印PDF文件 正反面都打印,还未研究出只打印单面的方法,待解决 public static void printFile(String path) throws Exceptio ...
- java修改远程服务器密码
积累: 1. echo 用户名:新密码 | chpasswd
- java连接远程服务器并执行命令
导入必要的jar包 <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganym ...
- Linux 笔记 #03# 在 Debian远程服务器上运行 Java socket程序
我试图做什么:把我的破代码放到服务器上运行,并成功与客户端进行 socket通信. 预备环境:刚安装好 MySQL 和 JVM 的 Linux远程服务器(Debian 8)一台. 主要有如下几个步骤: ...
- java使用sftp下载远程服务器文件
使用的是springboot的项目,只是贴出主要配置与类,代码较长,可以先折叠: 参考:https://www.cnblogs.com/xyzq/p/7049369.html 操作工具类SftpUti ...
- centos7远程服务器中redis的安装与java连接
1.下载安装redis 在远程服务器中你想下载的位置执行以下命令来下载redis文件到服务器中 $ wget http://download.redis.io/releases/redis-4.0.9 ...
随机推荐
- mount loop最大数的调整
mount: could not find any free loop device vi /etc/modules.conf Add "options loop max_loop=64&q ...
- Cocos移植到Android-使用Eclipse交叉编译打包
如果对命令行望而生畏,我们可以借助于安装有ADT插件的Eclipse工具实现交叉编译.使用Eclipse进行交叉编译,首先需要将要编译的工程导入到Eclipse的Workspace中,Workspac ...
- GET 和 POST 两种方式来完成Http接口
程序使用 HTTP 协议和服务器交互主要是进行数据的提交,通常数据的提交是通过 GET 和 POST 两种方式来完成,下面对这两种方式(.net c#)进行一下说明: 1. GET 方式. GET 方 ...
- AngularJS(5)-Http
$http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据 加入下面有一个存储在web服务器上的数据,假设地址为http://TestWebData/myData.php { &q ...
- VLAN和Trunk
Vlan实验题: 如图所示 解答过程 (一)相同vlan之间的设备全连通 1. 在SW1和SW2上分别创建vlan2和vlan3, 命令如下 SW1# vlan database SW1(vlan)# ...
- 使用Java反射(Reflect)、自定义注解(Customer Annotation)生成简单SQL语句
这次给大家介绍一下在Java开发过程中 使用自定义注解开发:主要知识点: 1.反射 主要用于提取注解信息 2.自定义异常 主要是为了 ...
- scala知识点(一)
1.drop,dropRight,dropWhile drop: drop(n: Int): List[A] 丢弃前n个元素,返回剩下的元素 dropRight: dropRight(n: Int): ...
- Natural Language Processing with Python - Chapter 0
一年之前,我做梦也想不到会来这里写技术总结.误打误撞来到了上海西南某高校,成为了文科专业的工科男,现在每天除了膜ha,就是恶补CS.导师是做计算语言学的,所以当务之急就是先自学计算机自然语言处理,打好 ...
- AvalonDock 2.0 的简单运用
最近在研究AvalonDock的一些使用,碰到了一些问题.现在拿出来跟大家分享分享. 网上找了一大把AvalonDock 1.3版本的资料,弄出Demo后发现属性面板(DockableContent) ...
- 【git】借助github学习成果
1.创建分支 git branch dev //创建分支 git checkout dev //切换分支 或者用一句 git checkout -b dev 删除一个分支 git check ...