如何用java程序监控windows中的tcp状态

如何用java程序监控windows中的tcp状态,java,tcp,monitoring,Java,Tcp,Monitoring,我想通过JAVA程序监控我的系统有多少TCP连接。 在Linux中,有一个文件包含有关TCP连接的所有信息。 文件名为/proc/net/tcp 从该文件我可以监视,但windows中是否有类似的文件,以便我可以从该文件监视TCP数据。这似乎正是您需要的。您没有指定所需的确切信息,但JVM提供了大量随时可用的统计信息,包括文件描述符使用情况。您可能希望首先使用JConsole进行探索——这是Oracle对JConsole的介绍 编辑:虽然似乎没有任何标准方法可以精确获取TCP连接数,但有一种li

我想通过JAVA程序监控我的系统有多少TCP连接。 在Linux中,有一个文件包含有关TCP连接的所有信息。 文件名为/proc/net/tcp 从该文件我可以监视,但windows中是否有类似的文件,以便我可以从该文件监视TCP数据。

这似乎正是您需要的。您没有指定所需的确切信息,但JVM提供了大量随时可用的统计信息,包括文件描述符使用情况。您可能希望首先使用JConsole进行探索——这是Oracle对JConsole的介绍

编辑:虽然似乎没有任何标准方法可以精确获取TCP连接数,但有一种linux特定的方法可以获取打开的文件描述符总数:
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连接