VC++设计图形显示网络流量程序

     本人是北京邮电大学的研究生,正在学习MFC,前几天在网上看到了《VC++设计图形显示CPU内存利用率程序 》。

http://www.yesky.com/212/1870212.shtml

 

    于是自己仿照他的方法,编了VC++设计图形显示网络流量程序。

    其实网络监控,或者网络流量的MFC基本编程比较简单。就是熟悉几个结构体,和几个函数。包括GetIfTable函数,MIB_IFTABLE和MIB_IFROW这两个结构体,可以google一下,或者msdn查一下手册,比较简单。

      我这有个例子,就是我的程序中的GetNetUsges这个函数,获得网络的网卡类型(是10M或者100M),及时的发送数据个数,接受数据个数。

//
//netspeed函数获得本机网卡的接受,发送数据量,和网口是什么类型的,
//
//

int  CNetUsgesCtl::GetNetUsges(DWORD &speed,DWORD &sendtotal ,DWORD &retotal)
{
 
 MIB_IFTABLE * pIfTable = NULL;   //网络信息表
 ULONG  dwSize  = 0;      //接口个数 
 DWORD  dwRet;     //返回值
 
 dwRet = GetIfTable( pIfTable, &dwSize, TRUE   );   //dwsize获得接口个数
 if   ( dwRet  ==  ERROR_INSUFFICIENT_BUFFER   )  
 {  
  pIfTable  =  (  MIB_IFTABLE  *  )  new  char[dwSize];     
  if  (  pIfTable  !=  NULL  )  
  {  
   dwRet   =   GetIfTable(   pIfTable,   &dwSize,   TRUE   );   //获得真实接口信息   
   if   (   dwRet   ==   NO_ERROR   )  
   {  
    TRACE(   "dwNumEntries   =   %u/n",   pIfTable->dwNumEntries   );       
    for   (   int   i=0;   i<pIfTable->dwNumEntries;   i++   )  
    {  
     if((pIfTable->table[i]).dwType ==6  
      && (pIfTable->table[i]).dwInOctets>0 && (pIfTable->table[i]).dwOutOctets>0 ){   
      //只保留dwtype为6是网卡信息,接受发送了数据。默认服务器只能用一个网卡,
      TRACE(   "table[%1d].dwIndex   =   %u/n", i, (pIfTable->table[i]).dwIndex   );       
      TRACE(   "    dwType     =   %u/n", (pIfTable->table[i]).dwType   );       
      TRACE(   "    dwSpeed   =   %u/n",  (pIfTable->table[i]).dwSpeed   );  
      //added (pIfTable->table[i]).dwInOctets=0;    
      TRACE("/t received data is %u/n",(pIfTable->table[i]).dwInOctets); //接口接受总数据    
      TRACE("/t send  data is %u/n",(pIfTable->table[i]).dwOutOctets);   // 接口发送总数据
      
      speed=(pIfTable->table[i]).dwSpeed;      //获得网卡数据类型,10M or100M
      retotal=(pIfTable->table[i]).dwInOctets;   //网卡接受到的总的数据字节    
      sendtotal=(pIfTable->table[i]).dwOutOctets;   //网卡发送的
     }
    }  
   }  
   else   {    
    TRACE(   "Some   error   occured in netspeed!/n"   );  
   }  
  }  
  else   {  
   TRACE(   "Memory allocate failue/n"   );  
  }  
 }  
 else   {     
  TRACE( "Some error  occured  in netspeed!/n" );  
 }   
 
 //   m_ulNewUsges=    ;DWORD &speed,DWORD &sendtotal ,DWORD &retotal
    double speed1=speed;
 
 double usgedreceive=(retotal-m_recedata)/(1000);
 double  usgedsend=(sendtotal-m_senddata)/(1000);

 

 return   0;    
}

 

这个程序的全部代码我已经传到了CSDN上了,可以搜索资源 《自己用mschart做的网络流量监控MFC程序》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值