【问题标题】:how to Monitor tcp stats in windows with java program如何使用 java 程序在 windows 中监视 tcp 统计信息
【发布时间】:2013-08-29 06:12:33
【问题描述】:

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

【问题讨论】:

    标签: java tcp monitoring


    【解决方案1】:

    您可以使用 netstat 命令。您可以使用 RunTime 类从 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" 不会给发送和接收队列
    【解决方案2】:

    看来JMX 正是您所需要的。您没有指定需要哪些精确信息,但 JVM 提供了许多现成的统计信息,包括文件描述符使用情况。您可能想先使用 JConsole 来探索它 - here 是 Oracle 对 JConsole 的介绍。

    编辑:虽然似乎没有任何标准方法可以精确获取 TCP 连接数,但有一种特定于 linux 的方法可以获取打开文件描述符的总数:OperatingSystem.OpenFileDescriptorCount 属性。

    【讨论】:

    • 如何通过 jmx 监控 tcp 连接,我认为 jmx 没有办法我们只能监控应用程序、服务器等 ..not tcp 连接
    猜你喜欢
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多