Это лениво и жульничество, но .... Я знаю, что я буду за это заслужен ... Не могли бы вы использовать процесс для выполнения 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...
}
}
Простое скрытое окно ....
Надеюсь, это поможет,
С наилучшими пожеланиями,
Том.