Windows和Linux下 Java开发ping工具类
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工具类的更多相关文章
- 用Java开发一个工具类,提供似于js中eval函数功能的eval方法
今天在看到<Java疯狂讲义>中一个章节习题: 开发一个工具类,该工具类提供一个eval()方法,实现JavaScript中eval()函数的功能--可以动态运行一行或多行程序代码.例如: ...
- Linux下Java开发环境搭建—CentOS下Eclipse的安装教程
据了解,在Linux下的Java开发很多时候都比较喜欢使用vim + 插件,反而很少使用Eclipse,但是我是第一次使用Linux来进行Java编程,就什么都体验下啦,好啦,废话不多说,直接开始啦. ...
- java开发常用工具类
package com.rui.util; import java.text.DateFormat; import java.text.DecimalFormat; import java.text. ...
- linux学习笔记2:linux 下java开发的软件安装
一.java ee开发环境的搭建 1.jdk的安装步骤 (1)首先必须要有安装文件,具体的可以去相关网站上下载,并制作iso文件 (2)将制作的iso文件挂载到linux系统上,并在虚拟机上将iso文 ...
- linux下JAVA开发的环境配置
1.去http: //java.sun.com/j2se/1.4.2/download.html 下载一个Linux Platform的JDK,建议下载RPM自解压格式的(RPM in self-ex ...
- Linux下java开发环境配置总结
1 安装JDK,卸载以前的jdk,安装jdk1.8 : 参考:http://www.jb51.net/os/RedHat/73016.html 需要注意配置环境变量中的路径要和当前安装的jdk路径一致 ...
- Linux下Java开发环境搭建—CentOS下Mysql安装教程
本人学习Linux时使用的是CentOs5.5版本,在该环境中,Mysql的安装方法有很多种,下面我只讲我这次成功了的方法,作为一个记录,供大家参考,同时给自己做一个笔记. MySQL下载 1.进入网 ...
- windows及linux下 golang开发环境配置
windows环境: 1.系统以及软件包版本: OS: windows 8.1 64位 x64处理器 GO:安装包:go1.7.3.windows-amd64.mis IDE:压缩包:liteid ...
- linux下C++开发工具
就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样.Emacs, vi, eclipse, anjuta,kd ...
随机推荐
- asp.net 导出excel--NPOI
1.使用OLEDB导出Excel ,这种方式有点慢,慎用 /// <summary> /// 使用OLEDB导出Excel /// </summary> /// <par ...
- Jumpserver(跳板机、堡垒机)启动jms Django连接mysql数据库报错
解决办法 根据报错信息 , 去查看官方手册 在settings.py文件夹加入DATABASES['OPTIONS']['init_command'] = "SET sql_mode='ST ...
- dedecms织梦(一)
网站动静态转换 织梦后台--->系统--->系统设置--->SQL命令行工具 1.将网站所有栏目设置成动态页 update dede_arctype set isdefault=-1 ...
- Python 第五阶段 学习记录之---Django 基础
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- 字典排序 sorted
a = {6:2,8:0,1:4,-5:6,99:11,4:22} print( sorted(a.items()) ) #默认安照key排序的print( sorted(a.items(),key= ...
- vue条件语句v-if、v-else、v-else-if用法
vue条件语句v-if.v-else.v-else-if用法 v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建.v-if 也是惰性的:如果在初始渲 ...
- 创建servlet程序知识点详解---servlet-day07
情景1: 京东在买东西的时候,只有结帐的时候才会要求必须登录账户 #1.状态管理 ##(1)什么是状态管理? 将浏览器与web服务器之间多次交互当做一个整体来处理,并且将多次交互所涉及的数据(即状态) ...
- vue.js中的computed和watch的区别
1.computed在调用时不需要加(),watch是不需要调用的2.computed如果属性没有发生改变时会从缓存中读取值,watch当属性发生改变时会接收到2个值:一个为新值,一个为旧值3.com ...
- 2.0JAVA基础复习——JAVA语言的基础组成关键字和标识符
JAVA语言的基础组成有: 1.关键字:被赋予特殊含义的单词. 2.标识符:用来标识的符号. 3.注释:用来注释说明程序的文字. 4.常量和变量:内存存储区域的表示. 5.运算符:程序中用来运算的符号 ...
- mysql获取随机字符串和随机数的方法
在我们开发的过程中,我们可能会需要在表中随机生成一些数据以供我们进行相应的测试. 就像我之前发的“mysql创建存储过程向数据表中加入规定条数的数据” 那么我们应该怎样生成随机的字符串和随机数字呢? ...