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. sessionid固定与session混淆的一些随想

    以前一直觉得sessionid固定和session混淆就是两个一样的东西,后来发现两者还是要分开来的,主要因为利用场景的不同!!! sessionid固定和session混淆还是需要区分开来的一般情况 ...

  2. tp 内置压缩文件zip

    一.解压缩zip文件 $zip = new ZipArchive;//新建一个ZipArchive的对象 /* 通过ZipArchive的对象处理zip文件 $zip->open这个方法的参数表 ...

  3. ubuntu apache 配置虚拟主机 与 二级域名

    一.ubuntu 配置虚拟主机 方法一:添加端口号 第一步进入 /etc/apache2/sites-available/ 目录,将 000-default.conf 复制一份到当前目录下并重命名,然 ...

  4. 内存地址 id

    def a(): return b def b(): print('666')c = a()print(c) #打印16进制的内存地址print(b) #打印16进制的内存地址print (id(c) ...

  5. Field amqpTemplate in * required a single bean, but 3 were found:

    Field amqpTemplate in * required a single bean, but 3 were found: Spring Boot 启动的时候报的错 使用Spring Boot ...

  6. map的实际操作用并for_each遍历

    #include<iostream> #include<map> #include<algorithm> #include<string> using ...

  7. Python类的私有属性

    class Bar(object): __age = 18 sex = 'male' def __init__(self, ): pass def f(self): print(self.__age) ...

  8. 如何利用cURL和python对服务端和web端进行接口测试

    工具描述 cURL是利用URL语法在命令行方式下工作的文件传输工具,是开源爱好者编写维护的免费工具,支持包括Windows.Linux.Mac等数十个操作系统,最新版本为7.27.0,但是我推荐大家使 ...

  9. java excel大数据量导入导出与优化

    package com.hundsun.ta.utils; import java.io.File; import java.io.FileOutputStream; import java.io.I ...

  10. python学习笔记:深浅拷贝的使用和原理

    在理解深浅拷贝之前,我们先熟悉下变量对象和数据类型 1.变量和对象 变量-引用-对象(可变对象,不可变对象) 在python中一切都是对象,比如[1,2],'hello world',123,{'k1 ...