おそらく誤解を招くタイトルですが、私の他の質問の人々のおかげで、私はプログラムをある程度機能させましたが、今は何をすべきかわかりません.
コマンドプロンプトコマンドを実行して出力を返す方法は次のとおりです
public static String cmdExec(String cmdLine) {
String line;
String output = "";
try {
Process p = Runtime.getRuntime().exec(cmdLine);
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
output += (line + '\n');
}
input.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
return output;
}
それは私が望むように機能しますが、今このメソッドを実行すると、すべてが完了するまで待機してから出力が返されますが、これは私が望むものではありません。
cmdExec メソッドを使用した ping フラッディング メソッドを作成しました。cmdExec() を呼び出す方法は次のとおりです
String[] input = ipTextField.getText().split(":");
if(input.length == 2) {
System.out.println(cmdExec("cmd /c ping " + input[0] + " -t -n " + Integer.parseInt(input[1])));
たとえば、プログラムで「127.0.0.1:3」と入力すると、localhost に 3 つのパケットが送信されます。ここでの問題は、コマンド プロンプトからの出力として取得した行を 1 つずつ出力する代わりに、3 つのパケットすべてが送信されるまで待機してから、完全な出力を出力することです。
コマンド プロンプトで「ping 127.0.0.1 -t -n 3」と入力すると、一度にすべてではなく、1 つずつ応答が出力されるので、プログラムで同じことを行うにはどうすればよいでしょうか。