上一次写的ping ip工具使用起来发现效率不是很高,因为默认ping ip地址需要发送四次数据包。导致ping一个ip时,会消耗很长的时间,为了节省时间,提高效率。结合ping 命令的参数,优化了一下。先熟悉下ping命令参数。
## ping 命令参数 ##
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [-j computer-list] | [-k computer-list] [-w timeout] destination-list
-t Ping 指定的计算机直到中断。
-a 将地址解析为计算机名。
-n count 发送 count 指定的 ECHO 数据包数。默认值为 4。
-l length 发送包含由 length 指定的数据量的 ECHO 数据包。默认为 32 字节;最大值是65,527。
-f 在数据包中发送”不要分段”标志。数据包就不会被路由上的网关分段。
-i ttl 将”生存时间”字段设置为 ttl 指定的值。
-v tos 将”服务类型”字段设置为 tos 指定的值。
-r count 在”记录路由”字段中记录传出和返回数据包的路由。count 可以指定最少 1 台,最多 9 台计算机。
-s count 指定 count 指定的跃点数的时间戳。
-j computer-list 利用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。
-k computer-list 利用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。
-w timeout 指定超时间隔,单位为毫秒。
destination-list 指定要 ping 的远程计算机。
实例:
ping ip不带参数
ping ip带参数
public class Test {
/**
* @description : ping ip工具,优化
* @date 2016-11-25
* @param args
*
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Runtime runtime = Runtime.getRuntime(); // 获取当前程序的运行进对象
Process process = null; // 声明处理类对象
String line = null; // 返回行信息
InputStream is = null; // 输入流
InputStreamReader isr = null; // 字节流
BufferedReader br = null;
String ip = "www.baidu.com";
String type = "-w 3000 -n 1";//-w指定时间间隔,-n:发送几次数据包
boolean res = false;// 结果
try {
process = runtime.exec("ping " + ip + type); // PING
is = process.getInputStream(); // 实例化输入流
isr = new InputStreamReader(is);// 把输入流转换成字节流
br = new BufferedReader(isr);// 从字节中读取文本
while ((line = br.readLine()) != null) {
if (line.contains("TTL")) {
res = true;
break;
}
}
is.close();
isr.close();
br.close();
if (res) {
System.out.println("ping 通 ...");
} else {
System.out.println("ping 不通...");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}