C#实现监控网络流量
本文转载自:http://blog.csdn.net/zhanjianshinian/article/details/8177851
public partial class NetJiankongForm2 : Form{public NetJiankongForm2(){InitializeComponent();}private MyNetWorkMatchClass[] m_MNWMadapters;private MyNetWorkMonitor monitor;private void NetJiankongForm2_Load(object sender, EventArgs e){monitor = new MyNetWorkMonitor();m_MNWMadapters = monitor.Adapters; //获得控制器MyNetWorkMonitor上所有计算机的适配器列表if (m_MNWMadapters.Length == 0){listBox1.Enabled = false;MessageBox.Show("在计算机上没有找到网络适配器");return;}listBox1.Items.AddRange(m_MNWMadapters); }private void listBox1_SelectedIndexChanged(object sender, EventArgs e) //选中其中一个适配器 {monitor.StopMonitoring();monitor.StartMonitoring(m_MNWMadapters[listBox1.SelectedIndex]); //控制该适配器开始工作this.timer1.Start(); //计时开始 }private void timer1_Tick(object sender, EventArgs e) //计时开始,用于每秒钟改变显示速度 {MyNetWorkMatchClass adapter = m_MNWMadapters[listBox1.SelectedIndex]; //该适配器textBox_Down.Text = String.Format("{0:n} kbps", adapter.DownloadSpeedKbps); //得到该适配器的下载速度textBox_Up.Text = String.Format("{0:n} kbps", adapter.UploadSpeedKbps); //得到该适配器的上传速度 }}public class MyNetWorkMonitor{private System.Timers.Timer Monitor_Timer; // 计时器事件执行每秒钟刷新值在适配器。private ArrayList m_AdaptersList; //该计算机的适配器列表。private ArrayList m_MonitoredAdapters; //目前控制的适配器列表public MyNetWorkMonitor(){m_AdaptersList = new ArrayList(); //用来保存获取到的计算机的适配器列表m_MonitoredAdapters = new ArrayList(); //运行的有效的适配器列表 ShowNetAdapter(); //列举出安装在该计算机上面的适配器Monitor_Timer = new System.Timers.Timer(1000);Monitor_Timer.Elapsed += new ElapsedEventHandler(timer_ElapsedClick);}private void timer_ElapsedClick(object sender, ElapsedEventArgs e) //用于每秒钟刷新速度 {foreach (MyNetWorkMatchClass adapter in m_MonitoredAdapters) //每秒钟遍历有效的网络适配器 {adapter.CaculateAndRefresh(); //刷新上传下载速度 }}private void ShowNetAdapter() //列举出安装在该计算机上面的适配器方法 {PerformanceCounterCategory PCCCategory = new PerformanceCounterCategory("Network Interface");foreach (string InstanceName in PCCCategory.GetInstanceNames()){if (InstanceName == "MS TCP Loopback interface")continue;// 创建一个实例Net workAdapter类别,并创建性能计数器它。MyNetWorkMatchClass myMNWMadapter = new MyNetWorkMatchClass(InstanceName);myMNWMadapter.m_Performance_Down = new PerformanceCounter("Network Interface", "Bytes Received/sec", InstanceName);myMNWMadapter.m_Performance_Up = new PerformanceCounter("Network Interface", "Bytes Sent/sec", InstanceName);m_AdaptersList.Add(myMNWMadapter);}}public void StartMonitoring(){if (m_AdaptersList.Count > 0){foreach (MyNetWorkMatchClass myMNWMadapter in m_AdaptersList)if (!m_MonitoredAdapters.Contains(myMNWMadapter)){m_MonitoredAdapters.Add(myMNWMadapter);myMNWMadapter.Start();}Monitor_Timer.Enabled = true;}}public void StartMonitoring(MyNetWorkMatchClass myMNWMadapter) //控制该适配器开始工作 {if (!m_MonitoredAdapters.Contains(myMNWMadapter)) {m_MonitoredAdapters.Add(myMNWMadapter);myMNWMadapter.Start(); //该适配器调用自己函数开始工作 }Monitor_Timer.Enabled = true;}public void StopMonitoring(){m_MonitoredAdapters.Clear();Monitor_Timer.Enabled = false;}public void StopMonitoring(MyNetWorkMatchClass adapter){if (m_MonitoredAdapters.Contains(adapter))m_MonitoredAdapters.Remove(adapter);if (m_MonitoredAdapters.Count == 0)Monitor_Timer.Enabled = false;}public MyNetWorkMatchClass[] Adapters //该控制类所控制的找出所有适配器的适配器列表 {get{return (MyNetWorkMatchClass[])m_AdaptersList.ToArray(typeof(MyNetWorkMatchClass));}}}//一个安装在计算机上的网络适配器,该类可用于获取网络中的流量public class MyNetWorkMatchClass{public override string ToString(){return m_strMatchName;}public string strMatchName{get{return m_strMatchName;}}public long DownloadSpeed{get{return m_lDownLoadSpeed;}}public long UploadSpeed{get{return m_lUpLoadSpeed;}}public double DownloadSpeedKbps{get{return this.m_lUpLoadSpeed / 1024.0;}}public double UploadSpeedKbps{get{return this.m_lUpLoadSpeed / 1024.0;}}private long m_lDownLoadNetValues1; //当前的下载速度,字节计算private long m_lUploadNetValues1; //当前的上传速度private long m_lDownLoadNetValues2; //一秒前的下载速度,字节计算private long m_lUploadNetValues2; //一秒前的上传速度private string m_strMatchName; //此适配器的名字internal PerformanceCounter m_Performance_Down; //控制下载速度的流量计算中心internal PerformanceCounter m_Performance_Up; // //控制上传速度的流量计算中心private long m_lDownLoadSpeed; //每秒钟下载速度private long m_lUpLoadSpeed; //每秒钟上传速度public MyNetWorkMatchClass(string strComputerNetName){m_lDownLoadNetValues1 = 0;m_strMatchName = strComputerNetName;m_lUploadNetValues1 = 0;m_lDownLoadNetValues2 = 0;m_lUploadNetValues2 = 0;}//该适配器准备控制的方法函数public void Start(){m_lUploadNetValues1 = m_Performance_Up.NextSample().RawValue;m_lDownLoadNetValues1 = m_Performance_Down.NextSample().RawValue;}public void CaculateAndRefresh() //计算速度 {m_lDownLoadNetValues2 = m_Performance_Down.NextSample().RawValue;m_lUploadNetValues2 = m_Performance_Up.NextSample().RawValue;m_lDownLoadSpeed = m_lDownLoadNetValues2 - m_lDownLoadNetValues1;m_lUpLoadSpeed = m_lUploadNetValues2 - m_lUploadNetValues1;m_lDownLoadNetValues1 = m_lDownLoadNetValues2;m_lUploadNetValues1 = m_lUploadNetValues2;}}
C#实现监控网络流量相关推荐
- Shell图形化监控网络流量
shell图形化监控网络流量 网络流量的监控工具有很多,如:Mrtg.Cacti.Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求.除了网络流量监控工具以外,还 ...
- 在 Linux/UNIX 终端下使用 nload 实时监控网络流量和带宽使用
摘要:如果你想在命令行界面监控网络吞吐量,nload应用程序是个不错的选择.它是一个实时监控网络流量和带宽使用的控制台应用程序,使用两个图表可视化地展示接收和发送的流量,并提供诸如数据交换总量.最小/ ...
- 使用Sniffer Pro监控网络流量
随着互联网多层次性.多样性的发展,网吧已由过去即时通信.浏览网页.电子邮件等简单的应用,扩展成为运行大量在线游戏.在线视频音频.互动教学.P2P等技术应用.应用特点也呈现出多样性和复杂性,因此,这些应 ...
- 运用Ntop监控网络流量(视频Demo)
运用Ntop监控网络流量 ____网络流量反映了网络的运行状态,是判别网络运行是否正常的关键数据,在实际的网络中,如果对网络流量控制得不好或发生网络拥塞,将会导致网络吞吐量下降.网络性能降低.通过流量 ...
- 基于linux网络流量监控与分析软件的设计与实现shell,Shell图形化监控网络流量
网络流量的监控工具有很多,如:Mrtg.Cacti.Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求.除了网络流量监控工具以外,还有Nagios这样的监控主机状 ...
- 【转载】Shell图形化监控网络流量
网络流量的监控工具有很多,如:Mrtg.Cacti.Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求.除了网络流量监控工具以外,还有Nagios这样的监控主机状 ...
- shell图形化监控网络流量 网络流量的监控工具有很多,如:Mrtg、Cacti、Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求。除了网络流量监控工具以外,还
网络流量的监控工具有很多,如:Mrtg.Cacti.Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求.除了网络流量监控工具以外,还有Nagios这样的监控主机状 ...
- 解决Zabbix用snmp监控网络流量不准的问题
发现Zabbix用snmp监控网络流量不准的问题好久了,根据防火墙或上网行为的显示流量远远过300Mbps,但是zabbix图形上显示的差别很大. 今天终于找到一篇文章http://www.linux ...
- 运用 Ntop 监控网络流量
运用Ntop监控网络流量 ____ 网络流量反映了网络的运行状态,是判别网络运行是否正常的关键数据,在实际的网络中,如果对网络流量控制得不好或发生网络拥塞,将会导致网络吞吐量下降. 网络性能降低.通过 ...
- 配置MRTG监控网络流量简单方法
MRTG (Multi Router Traffic Grapher)是一款监控网络流量负载的免费软件,目前利用MRTG已经开发出了各式各样的统计系统: 1.系统资源负载统计,例如:磁盘空间.CPU负 ...
最新文章
- java 连接两个arraylist,java – 在两个线程之间共享一个ArrayList?
- Caused by: java.net.BindException: Could not start rest endpoint on any port in port range 8085
- Linux的启动流程简析(以Debian为例)
- java定义计算机类并模拟其操作
- 拖动无边框的登入窗口
- 赵娜计算机,新学期 新起点 新征程——计算机学院2016级召开系列年级工作会议...
- 微型计算机控制赖寿宏pdf,微型计算机控制技术答案(赖寿宏).pdf
- 快速地将SolidWorks模型导入Adams
- 数据库mysql去重_MySQL数据库去重 SQL解决
- c语言iic通讯编程,I2C总线万能程序(C语言)
- PJSIP集成G729
- Use ulog to monitor ports logs (by quqi99)
- John Gaar “Slow Rollin” WA47 WA87 WA14麦克风
- K-mean clustering(K均值聚类算法)
- 在知乎上看到的一个关于Linux运维工程师必知的几点,希望对有志于从事运维工作的你有帮助
- 国际多语言版抖音快手脸书LINETIKTOK悬赏平台
- fscanf()php,fscanf()函数fscanf
- FFA interface
- 使用 * 打印等腰三角形
- 804半导体物理 中科院半导体所考研经验
热门文章
- Ubuntu之桌面安装及启动级别切换
- 【2021】13 年终总结
- 0xc0000005 系统应用日志_0xc0000005,小编教你怎么解决应用程序正常初始化0xc0000005失败...
- AssertionError: train: No labels found in ****\train.cache报错
- matlab符号值,matlab 符号积分和数值积分
- 运维工程师主要做什么_网络工程师和网络运维工程师到底有什么不同?
- 什么时候应该在ECMAScript 6中使用Arrow函数?
- 201912月灵感记录
- 大学生笔记本购买指南——扫盲版(2019)
- Cloud Compare快速大规模配准