本文转载自: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#实现监控网络流量相关推荐

  1. Shell图形化监控网络流量

    shell图形化监控网络流量 网络流量的监控工具有很多,如:Mrtg.Cacti.Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求.除了网络流量监控工具以外,还 ...

  2. 在 Linux/UNIX 终端下使用 nload 实时监控网络流量和带宽使用

    摘要:如果你想在命令行界面监控网络吞吐量,nload应用程序是个不错的选择.它是一个实时监控网络流量和带宽使用的控制台应用程序,使用两个图表可视化地展示接收和发送的流量,并提供诸如数据交换总量.最小/ ...

  3. 使用Sniffer Pro监控网络流量

    随着互联网多层次性.多样性的发展,网吧已由过去即时通信.浏览网页.电子邮件等简单的应用,扩展成为运行大量在线游戏.在线视频音频.互动教学.P2P等技术应用.应用特点也呈现出多样性和复杂性,因此,这些应 ...

  4. 运用Ntop监控网络流量(视频Demo)

    运用Ntop监控网络流量 ____网络流量反映了网络的运行状态,是判别网络运行是否正常的关键数据,在实际的网络中,如果对网络流量控制得不好或发生网络拥塞,将会导致网络吞吐量下降.网络性能降低.通过流量 ...

  5. 基于linux网络流量监控与分析软件的设计与实现shell,Shell图形化监控网络流量

    网络流量的监控工具有很多,如:Mrtg.Cacti.Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求.除了网络流量监控工具以外,还有Nagios这样的监控主机状 ...

  6. 【转载】Shell图形化监控网络流量

    网络流量的监控工具有很多,如:Mrtg.Cacti.Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求.除了网络流量监控工具以外,还有Nagios这样的监控主机状 ...

  7. shell图形化监控网络流量 网络流量的监控工具有很多,如:Mrtg、Cacti、Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求。除了网络流量监控工具以外,还

    网络流量的监控工具有很多,如:Mrtg.Cacti.Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求.除了网络流量监控工具以外,还有Nagios这样的监控主机状 ...

  8. 解决Zabbix用snmp监控网络流量不准的问题

    发现Zabbix用snmp监控网络流量不准的问题好久了,根据防火墙或上网行为的显示流量远远过300Mbps,但是zabbix图形上显示的差别很大. 今天终于找到一篇文章http://www.linux ...

  9. 运用 Ntop 监控网络流量

    运用Ntop监控网络流量 ____ 网络流量反映了网络的运行状态,是判别网络运行是否正常的关键数据,在实际的网络中,如果对网络流量控制得不好或发生网络拥塞,将会导致网络吞吐量下降. 网络性能降低.通过 ...

  10. 配置MRTG监控网络流量简单方法

    MRTG (Multi Router Traffic Grapher)是一款监控网络流量负载的免费软件,目前利用MRTG已经开发出了各式各样的统计系统: 1.系统资源负载统计,例如:磁盘空间.CPU负 ...

最新文章

  1. java 连接两个arraylist,java – 在两个线程之间共享一个ArrayList?
  2. Caused by: java.net.BindException: Could not start rest endpoint on any port in port range 8085
  3. Linux的启动流程简析(以Debian为例)
  4. java定义计算机类并模拟其操作
  5. 拖动无边框的登入窗口
  6. 赵娜计算机,新学期 新起点 新征程——计算机学院2016级召开系列年级工作会议...
  7. 微型计算机控制赖寿宏pdf,微型计算机控制技术答案(赖寿宏).pdf
  8. 快速地将SolidWorks模型导入Adams
  9. 数据库mysql去重_MySQL数据库去重 SQL解决
  10. c语言iic通讯编程,I2C总线万能程序(C语言)
  11. PJSIP集成G729
  12. Use ulog to monitor ports logs (by quqi99)
  13. John Gaar “Slow Rollin” WA47 WA87 WA14麦克风
  14. K-mean clustering(K均值聚类算法)
  15. 在知乎上看到的一个关于Linux运维工程师必知的几点,希望对有志于从事运维工作的你有帮助
  16. 国际多语言版抖音快手脸书LINETIKTOK悬赏平台
  17. fscanf()php,fscanf()函数fscanf
  18. FFA interface
  19. 使用 * 打印等腰三角形
  20. 804半导体物理 中科院半导体所考研经验

热门文章

  1. Ubuntu之桌面安装及启动级别切换
  2. 【2021】13 年终总结
  3. 0xc0000005 系统应用日志_0xc0000005,小编教你怎么解决应用程序正常初始化0xc0000005失败...
  4. AssertionError: train: No labels found in ****\train.cache报错
  5. matlab符号值,matlab 符号积分和数值积分
  6. 运维工程师主要做什么_网络工程师和网络运维工程师到底有什么不同?
  7. 什么时候应该在ECMAScript 6中使用Arrow函数?
  8. 201912月灵感记录
  9. 大学生笔记本购买指南——扫盲版(2019)
  10. Cloud Compare快速大规模配准