我想知道是否有任何方法可以访问.NET框架内丢弃数据包等信息。我知道Win32_PerRawData和Ip Helper API。提前致谢
答案 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以查找计算机上可用的内容。例如,您应该为每个网络适配器接收丢弃的网络接口+数据包。