APP下载

基于网卡的流量监控系统设计与实现

2014-04-29蓝敏

电脑迷 2014年13期
关键词:网卡流量监控

蓝敏

摘 要 本文对系统的本机基本信息查询、流量监控以及进程显示三个功能进行详细的设计及描述,并对系统实现的代码及界面进行介绍。

关键词 网卡 流量 监控

中图分类号:TP3 文献标识码:A

目前的网络监控软件,如360安全卫士的网络监控、网路岗等都是针对网络流量的,而网络流量跟网卡流量是有区别的,对于个人用户来说,网卡流量的状态也可以从一定程度上体现带宽使用的情况。本系统采用面向对象的软件开发办法,以Microsoft公司的可视化集成开发环境 Visual Studio .Net 作为开发平台,以C#作为开发语言实现网卡流量监控的功能。

1功能设计

(1)本机基本信息查询:查看IP地址:主要查看本机在局域网内中的IP地址;查看主机名:用于查看本机计算机的名称;查看MAC地址:查看网卡的唯一地址。

(2)流量监控:获取到本机的网卡列表,然后针对某块网卡进行动态的流量监控,并显示出来。

2 功能实现

2.1 本地信息查询功能实现

(1)查询IP地址:这个功能需要使用到 System.Net命名空间,在C#编程中,可利用它提供的DNS类获取IP地址,主要代码如下:

IPAddress[] addresslist=Dns.GetHostAddresses(Dns.GetHostName());

for (int i = 1; i < addresslist.Length; i++)

{ipaddress += addresslist[i].ToString() + "";}

tbIP.Text = ipaddress.ToString() + "";

上面的代码就是利用了DNS类,它主要是从域名系统中查找关于指定主机的信息,通过Dns.GetHostAddresses(Dns.GetHostName())得到指定主机的IP地址,并把它赋予IPAddress[]类中的变量,再把它在文本框中显示出来。

(2)查询主机名:这部分功能与上面的IP地址功能类似,也通过System.Net命名空间和DNS类来从域名系统中获得主机名,最主要的还是通过DNS类来实现。

(3)查询MAC地址:在获取本地MAC地址时,可以使用WMI规范,在.NET框架中,WMI规范的实现定义在System.Management命名空间中,但要使用该命名空间就必须先引用该程序指令集,所以在右侧右击引用,选择添加引用,在.NET中找到System.Management即可。主要代码如下:

ManagementObjectCollection mc = mac.GetInstances();

{if ((bool)m["IPEnabled"] == true)

tbMAC.Text += m["MacAddress"].ToString() + "\n";

m.Dispose();}

通过ManagementClass类来提取MAC地址信息,再用ManagementObjectCollection类来检索并返回对象的集合,通过循环来找到MAC地址字段值,并在文本框中显示。

2.2 流量监控功能的实现

这个模块的功能也可分为两个小模块,分别是获取网卡列表和对指定的网卡进行流量监控。

(1)获取网卡列表

主要代码如下:

monitor = new NetworkMonitor();

if (adapters.Length == 0)

{this.listadapters.Enabled = false;

return;}

this.listadapters.Items.AddRange(this.adapters);

(2)监控指定的网卡

if (this.listadapters.SelectedIndex < 0)

{MessageBox.Show("请指定要监控的网卡", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

this.timercounter.Stop();

}

else

this.timercounter.Start();

上述代码是防止在没有选择网卡项的情况下而实现的,if语句判断有没有选中指定的网卡,如果没有选择,则this.listadapters.SelectedIndex等于-1,即小于0,反之就会触发计数器对指定网卡进行监控。

NetworkAdapter adapter = this.adapters[this.listadapters.SelectedIndex];

this.down.Text=string.Format("{0:n}kbps",adapter.DownloadSpeedKbps;

nsc1.Value = (int)adapter.UploadSpeed / 100;

nsc2.Value = (int)adapter.DownloadSpeed / 100;

上面一部分也是通过调用monitor.StopMonitoring()和monitor.StartMonitoring()来实现对列表框中的指定网卡进行监控,中间的命令是当选中指定网卡后开始执行监控,调用计数器,在这个过程中,又通过调用format把NetworkMonitor中的adapter.UploadSpeedKbps(上传流量)和adapter.DownloadSpeedKbps(下载流量)转换成{0:n} kbps格式,并且把流量在波形控件中显示,从而实现对指定网卡的流量监控。

参考文献

[1] 陆晟,龚俭.网络安全监测的集成管理[J].东南大学学报,2009(05).

猜你喜欢

网卡流量监控
在DDS 中间件上实现双冗余网卡切换的方法
冰墩墩背后的流量密码
The Great Barrier Reef shows coral comeback
张晓明:流量决定胜负!三大流量高地裂变无限可能!
寻找书业新流量
你被监控了吗?
Zabbix在ATS系统集中监控中的应用
Server 2016网卡组合模式
挑战Killer网卡Realtek网游专用Dragon网卡
PDCA循环法在多重耐药菌感染监控中的应用