package com.test.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; public class PingUtils {public static boolean ping(String ip, int pingTimes, int timeOut) {
BufferedReader in = null;
String pingCommand = null; Runtime r = Runtime.getRuntime();
String osName = System.getProperty("os.name");
System.out.println(osName);
if(osName.contains("Windows")) {
//-n:要发送的回显请求数 -w:每次请求的超时时间
pingCommand = "ping " + ip + " -n " + pingTimes + " -w " + timeOut;
}else {
//linux下: -c是要发送的回显请求数,没有每次请求超时时间
pingCommand = "ping " + " -c " + pingTimes + " " + ip;
}
try {
Process p = r.exec(pingCommand);
if(p == null) {
return false;
}
       //ping命令使用的是GBK编码
in = new BufferedReader(new InputStreamReader(p.getInputStream(),"GBK"));
int connectCount = ;
String line = null;
while((line = in.readLine()) != null) {
connectCount += getCheckResult(line,osName);
}
System.out.println(connectCount); //只要ping通一次就说明连接成功?
return connectCount > ;
} catch(Exception e) {
e.printStackTrace();
logger.error("连接设备状态失败:" + e.getMessage());
return false;
} finally {
try {
in.close();
} catch (IOException e) {
logger.error(e.getMessage());
}
}
} //若含有ttl=64字样,说明已经ping通,返回1,否則返回0.
private static int getCheckResult(String line, String osName) {
if(osName.contains("Windows")) {
if(line.contains("TTL")) {
return ;
}
}else {
if(line.contains("ttl")) {
return ;
}
}
return ;
} // public static void main(String[] args) {
// ping("127.0.0.1", 4 , 1000);
//
// } }

根据IP地址和端口号PING

package com.zit.util;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException; import org.apache.log4j.Logger; public class PingUtil { private static Logger logger = Logger.getLogger(PingUtil.class); public synchronized static boolean ping(String host, int port, int timeOut) {
boolean flag = false;
Socket socket = null;
try {
socket = new Socket();
socket.connect(new InetSocketAddress(host.trim(), port), timeOut);
flag = true;
} catch (UnknownHostException e) {
System.out.println(flag);
e.printStackTrace();
return false;
} catch (SocketTimeoutException e) {
System.out.println(flag);
e.printStackTrace();
return false;
} catch (IOException e) {
System.out.println(flag);
e.printStackTrace();
return false;
} catch(Exception e) {
System.out.println(flag);
e.printStackTrace();
logger.error("Connect device failed:" + e.getMessage());
return false;
} finally {
try {
if (socket != null) {
socket.close();
}
}
catch (Exception e) {
}
}
System.out.println(flag);
return flag;
} public static void main(String[] args) {
ping("10.86.31.47", , ); } }

Windows和Linux下 Java开发ping工具类的更多相关文章

  1. 用Java开发一个工具类,提供似于js中eval函数功能的eval方法

    今天在看到<Java疯狂讲义>中一个章节习题: 开发一个工具类,该工具类提供一个eval()方法,实现JavaScript中eval()函数的功能--可以动态运行一行或多行程序代码.例如: ...

  2. Linux下Java开发环境搭建—CentOS下Eclipse的安装教程

    据了解,在Linux下的Java开发很多时候都比较喜欢使用vim + 插件,反而很少使用Eclipse,但是我是第一次使用Linux来进行Java编程,就什么都体验下啦,好啦,废话不多说,直接开始啦. ...

  3. java开发常用工具类

    package com.rui.util; import java.text.DateFormat; import java.text.DecimalFormat; import java.text. ...

  4. linux学习笔记2:linux 下java开发的软件安装

    一.java ee开发环境的搭建 1.jdk的安装步骤 (1)首先必须要有安装文件,具体的可以去相关网站上下载,并制作iso文件 (2)将制作的iso文件挂载到linux系统上,并在虚拟机上将iso文 ...

  5. linux下JAVA开发的环境配置

    1.去http: //java.sun.com/j2se/1.4.2/download.html 下载一个Linux Platform的JDK,建议下载RPM自解压格式的(RPM in self-ex ...

  6. Linux下java开发环境配置总结

    1 安装JDK,卸载以前的jdk,安装jdk1.8 : 参考:http://www.jb51.net/os/RedHat/73016.html 需要注意配置环境变量中的路径要和当前安装的jdk路径一致 ...

  7. Linux下Java开发环境搭建—CentOS下Mysql安装教程

    本人学习Linux时使用的是CentOs5.5版本,在该环境中,Mysql的安装方法有很多种,下面我只讲我这次成功了的方法,作为一个记录,供大家参考,同时给自己做一个笔记. MySQL下载 1.进入网 ...

  8. windows及linux下 golang开发环境配置

    windows环境: 1.系统以及软件包版本: OS: windows 8.1  64位  x64处理器 GO:安装包:go1.7.3.windows-amd64.mis IDE:压缩包:liteid ...

  9. linux下C++开发工具

    就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样.Emacs, vi, eclipse, anjuta,kd ...

随机推荐

  1. Python基础(九) type元类

    python元类:type()    元类是python高阶语法. 合理的使用可以减少大量重复性的代码. 元类实际上做了以下三方面的工作: 干涉创建类的过程 修改类 返回修改之后的类 为什么使用元类? ...

  2. CentOS 7 NAT模式LVS搭建

    NAT模式下 , 调度器需要有两个IP , 一个公网IP一个内网IP , web服务器只需要内网IP 调度器LB : 192.168.94.11(内网IP)  192.168.29.11 (仅主机模式 ...

  3. poj1733(并查集+离散化)

    题目大意:有一个长度为n的0,1字符串, 给m条信息,每条信息表示第x到第y个字符中间1的个数为偶数个或奇数个, 若这些信息中第k+1是第一次与前面的话矛盾, 输出k; 思路:x, y之间1的个数为偶 ...

  4. InternalError (see above for traceback): Blas GEMV launch failed: m=1, n=100

    python tensorflow 运行提示错误:InternalError (see above for traceback): Blas GEMV launch failed:  m=1, n=1 ...

  5. python hello 的三种方法

    1)直接 print("hello") 2)使用main函数: def main(): print("Helloa你好") if __name__ == &qu ...

  6. docker启动后忘记挂载nvidia-docker-volume的解决方法

    进入 docker 目录 删除 volumes 下的所有文件 重新启动docker 运行nvidia-docker run XXX 来生成volume 修改所有 docker目录下containers ...

  7. yum无法安装的pdksh

    yum无法安装的pdksh,本地pdksh-5.2.14-37.el5_8.1.x86_64.rar,点击下载.

  8. D7 割点 割边 强连通分量

    今天几道是模板题: 第一道:(粘不了链接呜呜呜) 题目描述 n个城市之间有通讯网络,每个城市都有通讯交换机,直接或间接与其它城市连接.因电子设备容易损坏,需给通讯点配备备用交换机. 但备用 交换机数量 ...

  9. phpstorm 配置git上传代码到 码云

    方法一: 1.安装git,一路next下去. git安装完自带右键菜单 2.看一下phpstorm里的路径是否正确. 3.使用phpstorm管理代码库 新建,从码云上已有的公开项目克隆一份到本地: ...

  10. POJ 1390 Blocks(DP + 思维)题解

    题意:有一排颜色的球,每次选择一个球消去,那么这个球所在的同颜色的整段都消去(和消消乐同理),若消去k个,那么得分k*k,问你消完所有球最大得分 思路:显然这里我们直接用二位数组设区间DP行不通,我们 ...