即时通讯做一个小桌面应用程序的朋友做ping,它“工作”,即时计划使用ping -t(用于无限ping),但在这样,我做到了,它永远不会显示结果,因为它只返回时结束,我有什么改变/新增加的“JTextField中” everyping结果每ping一次返回ping结果,而不仅仅是最后
看看我有什么:
方法做ping并返回结果(resposta)。
public String pingar(String ip){
String resposta="";
String comando="ping -t "+ip;
try {
Scanner S = new Scanner(Runtime.getRuntime().exec(comando).getInputStream());
while(S.hasNextLine()) {
resposta+=S.nextLine()+"\n";
}
} catch (IOException ex) {
ex.printStackTrace();
}
return resposta;
}
方法来启动上述方法和使用该方法adicionaresultado追加的结果(resposta) 公共无效ativaoping(){ adicionaresultado((pingar(tfIp.getText()))); }
改变/添加文本和设置滚动的位置到结束
public void adicionaresultado(String resposta) {
taResultados.append(resposta);
taResultados.setCaretPosition(taResultados.getDocument().getLength());
//tfResultado.setText(tfResultado.getText() + "\n" + resposta);
}
}
的方法,但我的问题是,它只能返回,并添加文本时,完成平,所以我永远不会有能力使用ping -t
不错,但我会如何杀死它?我解决了与另一件事jtextarea的问题,但我会尝试你的,但如果我想停止使用你的代码ping /关闭窗口,将有什么命令 – user2582318
而不是声明pinger.executor作为执行者,declare它作为一个ExecutorService,然后你可以访问#shutdown()和#awaitTermination方法。这些允许您杀死执行程序及其所有管理的可运行程序。 – codethulhu
huum,@codethulhu我明白,即时通讯使用: pinger.executor.shutdown();和 \t \t \t pinger.executor.awaitTermination(60,TimeUnit.MILLISECONDS); \t \t \t \t \t System.out.println(pinger.executor.isShutdown()); \t \t ....但它仍然在TextArea中显示ping和PING的结果,conhost.exe仍在进程列表中;(我必须手动杀死它? – user2582318