如何在Windows中中断/停止java ping命令?

时间:2013-03-04 11:06:47

标签: java runtime interrupt

我得到了一个示例ping程序,稍作修改......

    String ip = "192.168.1.1 -t";
    String pingResult = "";      
    String pingCmd = "ping " + ip;

    try{

        Runtime r = Runtime.getRuntime();
        Process p = r.exec(pingCmd);

        Pattern pattern = Pattern.compile("time=(\\d+)ms");
        Matcher m = null;
        BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            m = pattern.matcher(inputLine);
            if (m.find()) {
                System.out.println(m.group(1));
            }
        }
        in.close();

    }
    catch (IOException e) {
        System.out.println(e);
    }

我将实现一个包含启动和退出按钮的GUI,启动按钮可以工作,但退出按钮不会。单击退出按钮时,程序不显示rtt时间输出。但该程序实际上并没有退出/停止。我怎么完全关闭它,我会添加像Runtime.getRuntime().addShutdownHook这样的东西。

需要一些提示和指导,谢谢先进......

2 个答案:

答案 0 :(得分:0)

您可以使用ping的-n参数,然后再次启动或在用户需要停止时停止。

Process还有一个OutputStream。如果要停止ping,可以尝试发送Ctrl-C。

答案 1 :(得分:0)

boolean isStoped=false;

while ((inputLine = in.readLine()) != null && (!isStoped)) {
            m = pattern.matcher(inputLine);
            if (m.find()) {
                System.out.println(m.group(1));
            }
        }
单击退出按钮时,

生成isStoped=true并致电p.destroy()。希望这会对你有所帮助。