提问人: 提问时间:2/5/2020 最后编辑:user207421 更新时间:2/5/2020 访问量:1177
如何从 Java 程序运行 Linux 命令“netstat”?
How do I run the Linux command, “netstat” from a Java program?
问:
我有一个用 Java 编写的客户端-服务器项目,其中它们通过套接字连接。我无法弄清楚如何从我的 Java 代码的服务器端运行“netstat”。
答:
1赞
Menelaos
2/5/2020
#1
不幸的是,java 中没有直接可用的 netstat 等价物。
您可以使用进程 API 生成一个新进程并检查输出。
我将使用以下问答中的一个例子:https://stackoverflow.com/a/5711150/1688441
我已将其更改为调用。生成进程后,您还必须读取输出并对其进行解析。netstat
Runtime rt = Runtime.getRuntime();
String[] commands = {"netstat", ""};
Process proc = rt.exec(commands);
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(proc.getErrorStream()));
// Read the output from the command
System.out.println("Here is the standard output of the command:\n");
String s = null;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
// Read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
来源: https://stackoverflow.com/a/5711150/1688441
评论
0赞
user207421
2/6/2020
这在一般情况下是行不通的。您要么需要合并流,要么在单独的线程中并发读取它们。
0赞
Menelaos
2/6/2020
@user207421 你是对的!,只要进程正在运行,第一个 while 循环就会阻止另一个。我会更新这个。
评论