使用.NET访问类似netstat的数据

时间:2010-02-12 21:09:32

标签: .net performance networking

我想知道是否有任何方法可以访问.NET框架内丢弃数据包等信息。我知道Win32_PerRawData和Ip Helper API。提前致谢

2 个答案:

答案 0 :(得分:1)

这是懒惰和欺骗在这里,但....我知道我会因此而受到抨击......你不会考虑使用一个进程来执行netstat -e n,其中n是秒数的间隔。如果您正在谈论Winforms / WPF,使用System.Diagnostics.Process类转出一个隐藏窗口,输出重定向到输入流,您可以在其中解析丢弃的数据包?

修改:这是建议的代码示例

    public class TestNetStat
    {
        private StringBuilder sbRedirectedOutput = new StringBuilder();
        public string OutputData
        {
            get { return this.sbRedirectedOutput.ToString(); }
        }
        public void Run()
        {
            System.Diagnostics.ProcessStartInfo ps = new System.Diagnostics.ProcessStartInfo();
            ps.FileName = "netstat";
            ps.ErrorDialog = false;
            ps.Arguments = "-e 30";   // Every 30 seconds
            ps.CreateNoWindow = true;
            ps.UseShellExecute = false;
            ps.RedirectStandardOutput = true;
            ps.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

            using (System.Diagnostics.Process proc = new System.Diagnostics.Process())
            {
                proc.StartInfo = ps;
                proc.Exited += new EventHandler(proc_Exited);
                proc.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_OutputDataReceived);
                proc.Start();
                proc.WaitForExit();
                proc.BeginOutputReadLine();
                while (!proc.HasExited) ;
            }
        }

        void proc_Exited(object sender, EventArgs e)
        {
            System.Diagnostics.Debug.WriteLine("proc_Exited: Process Ended");
        }

        void proc_OutputDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
        {
            if (e.Data != null) this.sbRedirectedOutput.Append(e.Data + Environment.NewLine);
            // Start parsing the sbRedirected for Discarded packets...
        }
    }

简单隐藏的窗口......

希望这有帮助, 最好的祝福, 汤姆。

答案 1 :(得分:1)

您可以使用PerformanceCounter类。运行Perfmon.exe以查找计算机上可用的内容。例如,您应该为每个网络适配器接收丢弃的网络接口+数据包。