如何用java程序监控windows中的tcp状态
我想通过JAVA程序监控我的系统有多少TCP连接。 在Linux中,有一个文件包含有关TCP连接的所有信息。 文件名为/proc/net/tcp 从该文件我可以监视,但windows中是否有类似的文件,以便我可以从该文件监视TCP数据。这似乎正是您需要的。您没有指定所需的确切信息,但JVM提供了大量随时可用的统计信息,包括文件描述符使用情况。您可能希望首先使用JConsole进行探索——这是Oracle对JConsole的介绍 编辑:虽然似乎没有任何标准方法可以精确获取TCP连接数,但有一种linux特定的方法可以获取打开的文件描述符总数:如何用java程序监控windows中的tcp状态,java,tcp,monitoring,Java,Tcp,Monitoring,我想通过JAVA程序监控我的系统有多少TCP连接。 在Linux中,有一个文件包含有关TCP连接的所有信息。 文件名为/proc/net/tcp 从该文件我可以监视,但windows中是否有类似的文件,以便我可以从该文件监视TCP数据。这似乎正是您需要的。您没有指定所需的确切信息,但JVM提供了大量随时可用的统计信息,包括文件描述符使用情况。您可能希望首先使用JConsole进行探索——这是Oracle对JConsole的介绍 编辑:虽然似乎没有任何标准方法可以精确获取TCP连接数,但有一种li
OperatingSystem.OpenFileDescriptorCount
属性。这似乎正是您需要的。您没有指定所需的确切信息,但JVM提供了大量随时可用的统计信息,包括文件描述符使用情况。您可能希望首先使用JConsole进行探索——这是Oracle对JConsole的介绍
编辑:虽然似乎没有任何标准方法可以精确获取TCP连接数,但有一种特定于linux的方法可以获取打开的文件描述符总数:
OperatingSystem.OpenFileDescriptorCount
属性。您可以使用netstat命令。您可以使用运行时类从java执行此命令
{
Process p=Runtime.getRuntime().exec("cmd /c netstat");
p.waitFor();
BufferedReader reader=new BufferedReader(
new InputStreamReader(p.getInputStream())
);
String line=reader.readLine();
while(line!=null)
{
System.out.println(line);
line=reader.readLine();
}
}
您可以使用netstat命令。您可以使用运行时类从java执行此命令
{
Process p=Runtime.getRuntime().exec("cmd /c netstat");
p.waitFor();
BufferedReader reader=new BufferedReader(
new InputStreamReader(p.getInputStream())
);
String line=reader.readLine();
while(line!=null)
{
System.out.println(line);
line=reader.readLine();
}
}
上述程序的一个问题是,我需要TCP连接的发送和接收队列大小,而net stat命令不显示这些字段执行“netstat-a”,它也会给你发送和接收q的大小。在windows中,“netstat-a”不会给发送和接收队列上述程序的一个问题,我需要TCP连接的发送和接收队列大小,而net stat命令不显示这些字段执行“netstat-a”,它也会给出发送和接收q的大小。在windows中,“netstat-a”不会给出发送和接收队列如何通过jmx监视TCP连接,我认为jmx没有办法只监控应用程序、服务器等,而不是tcp连接如何通过jmx监控tcp连接,我认为jmx没有办法只监控应用程序、服务器等,而不是tcp连接