C#网速监测

Posted on 2012-05-09 09:47  去河边钓鱼  阅读(295)  评论(0)    收藏  举报

主要有两个类,其一是NetworkAdapter,该类的作用是获取本机网络适配器列表,并且可以通过该类的属性获取当前网速数据;其二是NetworkMonitor,该类是通过.NET的PerformanceCounter(性能计数器组件)监测本机每一个网络适配器对应的当前网速状况(翻译得不大好,具体还是看原汁原味的代码吧:))

NetworkAdapter类

1 [c-sharp:collapse] + expand sourceview plaincopyprint?

NetworkMonitor类

[c-sharp:collapse] + expand sourceview plaincopyprint?

Form关键代码

 1 using NetWorkSpeedMonitor;  
 2   
 3         private NetworkAdapter[] adapters;  
 4         private NetworkMonitor monitor;  
 5   
 6         private void FormMain_Load(object sender, System.EventArgs e)  
 7         {  
 8             monitor = new NetworkMonitor();  
 9             this.adapters = monitor.Adapters;  
10             /* If the length of adapters is zero, then no instance  
11              * exists in the networking category of performance console.*/  
12             if (adapters.Length == 0)  
13             {  
14                 this.ListAdapters.Enabled = false;  
15                 MessageBox.Show("No network adapters found on this computer.");  
16                 return;  
17             }  
18             this.ListAdapters.Items.AddRange(this.adapters);  
19         }  
20   
21         private void ListAdapters_SelectedIndexChanged(object sender, System.EventArgs e)  
22         {  
23             monitor.StopMonitoring();  
24             // Start a timer to obtain new performance counter sample every second.  
25             monitor.StartMonitoring(adapters[this.ListAdapters.SelectedIndex]);  
26             this.TimerCounter.Start();  
27         }  
28   
29         private void TimerCounter_Tick(object sender, System.EventArgs e)  
30         {  
31             NetworkAdapter adapter = this.adapters[this.ListAdapters.SelectedIndex];  
32             /* The DownloadSpeedKbps and UploadSpeedKbps are double values. You can also  
33              * use properties DownloadSpeed and UploadSpeed, which are long values but  
34              * are measured in bytes per second. */  
35             this.LableDownloadValue.Text = String.Format("{0:n} kbps", adapter.DownloadSpeedKbps);  
36             this.LabelUploadValue.Text = String.Format("{0:n} kbps", adapter.UploadSpeedKbps);  
37         }  

 

 

运行效果:

 

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3