java代码ping服务IP工具类(Windows,Linux环境)
2017-05-23 15:11
691 查看
public class PingIpUtils { private static Logger logger = LoggerFactory.getLogger(PingIpUtils.class); /** * @param ipAddress ip地址 * @param pingTimes 次数(一次ping,对方返回的ping的结果的次数) * @param timeOut 超时时间 单位ms(ping不通,设置的此次ping结束时间) * @return */ public static boolean ping(String ipAddress, int pingTimes, int timeOut) { BufferedReader in = null; String pingCommand = null; Runtime r = Runtime.getRuntime(); String osName = System.getProperty("os.name"); logger.info("项目所在系统是:" +osName); if(osName.contains("Windows")){ //将要执行的ping命令,此命令是windows格式的命令 pingCommand = "ping " + ipAddress + " -n " + pingTimes + " -w " + timeOut; }else{ //将要执行的ping命令,此命令是Linux格式的命令 //-c:次数,-w:超时时间(单位/ms) ping -c 10 -w 0.5 192.168.120.206 pingCommand = "ping " + " -c " + "4" + " -w " + "2 " + ipAddress; } try { //执行命令并获取输出 Process p = r.exec(pingCommand); if (p == null) { return false; } in = new BufferedReader(new InputStreamReader(p.getInputStream())); int connectedCount = 0; String line = null; while ((line = in.readLine()) != null) { connectedCount += getCheckResult(line,osName); } //如果出现类似=23 ms ttl=64(TTL=64 Windows)这样的字样,出现的次数=测试次数则返回真 //return connectedCount == pingTimes; logger.info("ping通设备IP的次数为:" +connectedCount); return connectedCount >= 2 ? true : false; } catch (Exception ex) { ex.printStackTrace(); //出现异常则返回假 return false; } finally { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } //若line含有=18 ms ttl=64字样,说明已经ping通,返回1,否則返回0. private static int getCheckResult(String line,String osName) { if(osName.contains("Windows")){ if(line.contains("TTL=")){ return 1; } }else{ if(line.contains("ttl=")){ return 1; } } return 0; } public static void main(String[] args) { String ipAddress = "www.sigchina.com"; String osName = System.getProperty("os.name"); System.out.println(osName); }}
相关文章推荐
- windows和linux环境下java调用C++代码-JNI技术
- windows和linux环境下java调用C++代码-JNI技术
- 在windows开发环境中,java代码中使用linux格式路径的方法需要注意的问题
- windows和linux环境下java调用C++代码-JNI技术
- windows和linux环境下java调用C++代码-JNI技术
- 在windows开发环境中,java代码中使用linux格式路径的方法需要注意的问题
- 在windows环境下写linux代码
- 如何去掉linux环境中C++代码中的^M,文件一般来自windows 下编辑的c++代码。
- Windows,Linux下Java开发环境的配置
- PHP代码从Windows环境迁移到linux环境下问题
- [原创] 如何在 Java 代码中获得 WebRoot 的物理路径?(区分 Windows 和 Linux 的情况)
- 如何去掉linux环境中C++代码中的^M,文件一般来自windows 下编辑的c++代码。
- windows、Linux下java 环境变量的配置
- Windows、Linux系统安装JDK配置Java环境变量
- java JDK 8 的安装以及环境变量的配置(Linux and Windows)
- windows和Linux下Java集成开发环境搭建
- JAVA用JNI方法调用C代码实现HelloWorld(含windows及ubuntu两种操作系统环境下的操作)
- Linux和windows环境下的Java开发的区别与不同
- Linux和windows环境下的Java开发的区别与不同
- Linux环境下Java开发 Linux和Windows比较