用java实现tracert命令

代码如下:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class TracertUtil { 

    String tracert = "tracert -d";	// 模拟tracert命令
    List<String> list = new ArrayList();

    /**
	 * tracert命令运行并输出结果
	 * @param ip
	 */
    public void Tracert(String ip, String maxnum, String overtime) {
    	
    	// 最大跃点数
        if (!"".equals(maxnum)) {
        	tracert = tracert + " -h " + maxnum;
        }
        // 超时时间
        if (!"".equals(overtime)) {
        	tracert = tracert + " -w " + maxnum;
        }
        tracert = tracert + " " + ip;
        System.out.println("执行的命令:" + tracert);
        try {
            command(tracert);	// 执行tracert命令
            list.remove(0);		// 删除结果中的第一行空行
            // 输出结果
            for (String s:list) {
            	System.out.println(s);
            }
        } catch (IOException exception) {
            exception.printStackTrace();
        }
    }

    /**
     * 执行 tracert 命令 
     * @param tracerCommand
     * @return
     * @throws IOException
     */
    private void command(String tracerCommand) throws IOException{ 
        // 通过Runtime类的getRuntime().exec()传入需要运行的命令参数
        Process process = Runtime.getRuntime().exec(tracerCommand);
        // 读取命令执行结果
        readResult(process.getInputStream());
        process.destroy();
    }

    /**
     * 通过输入流来将命令执行结果赋值给list
     * @param inputStream
     * @return
     * @throws IOException
     */
    private void readResult(InputStream inputStream) throws IOException{
        String commandInfo = null;		// 定义用于接收命令行执行结果的字符串
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        while ( (commandInfo = bufferedReader.readLine()) != null)  {
            list.add(commandInfo);	// 将运行结果添加到 list 中
        }
        bufferedReader.close();
    }
    
    public static void main(String[] args) {
    	TracertUtil util = new TracertUtil();
    	util.Tracert("baidu.com", "10", "10");
	}
} 

运行截图:

请添加图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值