用Java实现TRACERT
、PING
两个常用的网络小工具,windows和linux都可以用,下面是代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class TracertAndPingUtil {
/**
* tracert命令拼接
* @param ip
* @param maxnum
* @param overtime
*/
public void Tracert(String ip, String maxnum, String overtime) {
String tracert = ""; // 拼接tracert命令
String osName = System.getProperty("os.name").toUpperCase();//操作系统类型
String CODES="GBK";//编码
if(osName.contains("WINDOWS")) {// -h最大跃点数、-w超时时间
tracert = "tracert -d -h " + maxnum + " -w "+ overtime +" "+ip;
}else {
//-m最大跃点数、-w超时时间
tracert = "traceroute -I -m " + maxnum + " -w "+ Float.parseFloat(overtime)/1000.0 +" "+ip;
CODES="UTF-8";
}
doPingOrTracert(tracert, CODES);
}
/**
* ping命令拼接
* @param ip
* @param packagenum
* @param overtime
* @param packagelength
*/
public void Ping(String ip, String packagenum, String overtime, String packagelength) {
String ping = "ping "; // 拼接ping命令
String osName = System.getProperty("os.name").toUpperCase();//操作系统类型
String CODES="GBK";//编码
if(osName.contains("WINDOWS")) {
//-n 发送包数量 // -w超时时间(毫秒)// -l发送包长,最大65500
ping = ping + " -n " + packagenum+ " -w " + overtime+ " -l " + packagelength;
}else {
// -c发送包数量 // -i超时时间(秒)// -s发送包长,最大65500
ping = ping + " -c " + packagenum + " -i " + Float.parseFloat(overtime)/1000.0 + " -s " + packagelength;
CODES="UTF-8";
}
ping = ping + " " + ip;
doPingOrTracert(ping, CODES);
}
/**
* 执行命令并打印结果
* @param COMMAND
* @param CODES
*/
public void doPingOrTracert(String COMMAND, String CODES) {
try {
// 通过Runtime类的getRuntime().exec()传入需要运行的命令参数
Process process = Runtime.getRuntime().exec(COMMAND);
String commandInfo = null; // 定义用于接收命令行执行结果的字符串
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream(),CODES));
// 取出执行结果第一行空行
bufferedReader.readLine();
while ( (commandInfo = bufferedReader.readLine()) != null) {
// 逐行打印命令执行结果
System.out.println(commandInfo);
}
bufferedReader.close();
} catch (IOException exception) {
exception.printStackTrace();
}
}
public static void main(String[] args) {
TracertAndPingUtil util = new TracertAndPingUtil();
//util.Ping("127.0.0.1", "4", "100", "32");
//util.Tracert("baidu.com", "10", "500");
}
}
想整合到网页端并且想逐条显示的,可以试着在循环里把执行结果存放到缓存中,前端每秒循环获取添加