java - 在 Java 中获取跨平台操作系统级别的套接字信息和状态的最有效方法是什么
问题描述
在我的一个项目中,我需要有效地解决这个问题,所以需要你的意见。我正在尝试保持实时的操作系统端口活动,它非常动态,所以我想将它们保存在我的数据结构中,比如,
|进程名|pid|端口号|状态|
例如在 Windows 中,我可以使用 shell 命令获取信息,依次为“netstat -ano | find”9000”,然后是“tasklist /fi pid eq 12200”
private static String PidtoProcessName(String pid) {
Runtime rt = Runtime.getRuntime();
String cmdOut = null;
String[] cmdOutSegments = null;
try {
Process proc = rt.exec("cmd /c tasklist /fi \"pid eq " + pid + "\""); // tasklist /fi "pid eq 12200"
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(proc.getInputStream()));
while ((cmdOut = stdInput.readLine()) != null) {
cmdOutSegments = cmdOut.split(" ");
//System.out.println(cmdOutSegments[0]);
//System.out.println(cmdOut);
}
} catch (IOException e) {
e.printStackTrace();
cmdOutSegments = null;
}
return cmdOutSegments[0];
}
但是为每个端口运行 os shell 命令并进行解析,看起来跟踪动态端口活动效率不高,
您有什么想法吗,或者您可以建议第 3 方库来有效地解决这个问题,
谢谢,
解决方案
推荐阅读
- flutter - 颤动动画中的性能问题
- android - Android:如何使 AnimatedImageDrawable 填充 ImageView
- arrays - 在netbeans中,默认情况下数组是按值排序的,我应该如何将其更改为按索引
- angularjs - angularjs html组件配置
- asp.net-mvc - 如何在asp.net的square-connect支付网关中使用订单ID
- spring-boot - 从不同的微服务读取相同的缓存
- angular - 如何从组件执行功能(
- google-api - 有没有办法使用 Google Drive API 下载大于 10MB 的文档?
- node.js - 使用nodejs在firebase中列出GCP Bucket对象
- java - 春季时区问题中的 DateTimeFormat 注释