蓝敏
摘 要 本文对系统的本机基本信息查询、流量监控以及进程显示三个功能进行详细的设计及描述,并对系统实现的代码及界面进行介绍。
关键词 网卡 流量 监控
中图分类号: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).