网络流量实时监控源代码


网络流量实时监控源代码,用到的内容包括使用PHD和读取注册表中的系统性能数据!
资源截图
代码片段和文件信息

#include “stdafx.h“
#include “MFNetTraffic.h“
#include “float.h“

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

#include “winperf.h“

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

MFNetTraffic::MFNetTraffic()
{
lasttraffic = 0.0;
CurrentInterface = -1;
CurrentTrafficType = AllTraffic;
GetInterfaces();
}

MFNetTraffic::~MFNetTraffic()
{

}


PERF_object_TYPE *Firstobject(PERF_DATA_BLOCK *dataBlock)
{
  return (PERF_object_TYPE *) ((BYTE *)dataBlock + dataBlock->HeaderLength);
}

PERF_object_TYPE *Nextobject(PERF_object_TYPE *act)
{
  return (PERF_object_TYPE *) ((BYTE *)act + act->TotalByteLength);
}

PERF_COUNTER_DEFINITION *FirstCounter(PERF_object_TYPE *perfobject)
{
  return (PERF_COUNTER_DEFINITION *) ((BYTE *) perfobject + perfobject->HeaderLength);
}

PERF_COUNTER_DEFINITION *NextCounter(PERF_COUNTER_DEFINITION *perfCounter)
{
  return (PERF_COUNTER_DEFINITION *) ((BYTE *) perfCounter + perfCounter->ByteLength);
}

PERF_COUNTER_BLOCK *GetCounterBlock(PERF_INSTANCE_DEFINITION *pInstance)
{
  return (PERF_COUNTER_BLOCK *) ((BYTE *)pInstance + pInstance->ByteLength);
}

PERF_INSTANCE_DEFINITION *FirstInstance (PERF_object_TYPE *pobject)
{
  return (PERF_INSTANCE_DEFINITION *)  ((BYTE *) pobject + pobject->DefinitionLength);
}

PERF_INSTANCE_DEFINITION *NextInstance (PERF_INSTANCE_DEFINITION *pInstance)
{
  PERF_COUNTER_BLOCK  *pCtrBlk = GetCounterBlock(pInstance);

  return (PERF_INSTANCE_DEFINITION *) ((BYTE *)pInstance + pInstance->ByteLength + pCtrBlk->ByteLength);
}

char *WideToMulti(wchar_t *source char *dest int size)
{
  WideCharToMultiByte(CP_ACP 0 source -1 dest size 0 0);

  return dest;
}
/*
Window NT/2000: When calling the RegQueryValueEx function with hKey set to the 
HKEY_PERFORMANCE_DATA handle and a value string of a specified object the 
returned data structure sometimes has unrequested objects. Don‘t be surprised;
this is normal behavior. When calling the RegQueryValueEx function you should 
always expect to walk the returned data structure to look for the requested object. 
*/
//得到接口号为interfaceNumber的接口流量
double MFNetTraffic::GetTraffic(int interfaceNumber)
{
try
{
#define DEFAULT_BUFFER_SIZE 40960L

POSITION pos;
CString InterfaceName;
pos = Interfaces.FindIndex(interfaceNumber);
if(pos==NULL)
return 0.0;
//得到当前的接口名字
InterfaceName = Interfaces.GetAt(pos);

//为性能数据缓冲
unsigned char *data = new unsigned char [DEFAULT_BUFFER_SIZE];
// 从RegQueryValueEx返回的值:本例中忽略改变量
DWORD type;
// 缓冲的尺寸
DWORD size = DEFAULT_BUFFER_SIZE;
// RegQueryValueEx返回的值
DWORD ret;

// 从网络对象(索引是510)查询性能数据
/*
HKEY_PERFORMANCE_DATA:
Windows NT/2000/XP: Registry entries subordinate to this key allow you to 
access per

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      46567  2012-06-06 11:09  NetTrafficDebugMFNetTraffic.obj

     文件          0  2012-06-06 11:09  NetTrafficDebugMFNetTraffic.sbr

     文件      56743  2012-06-06 11:09  NetTrafficDebugmftrafficbutton.obj

     文件          0  2012-06-06 11:09  NetTrafficDebugmftrafficbutton.sbr

     文件    3204096  2012-06-06 11:09  NetTrafficDebugNetTrafficButton.bsc

     文件     143588  2012-06-06 11:09  NetTrafficDebugNetTrafficButton.exe

     文件     355144  2012-06-06 11:09  NetTrafficDebugNetTrafficButton.ilk

     文件      16710  2012-06-06 11:09  NetTrafficDebugNetTrafficButton.obj

     文件    6867124  2012-06-06 11:09  NetTrafficDebugNetTrafficButton.pch

     文件     377856  2012-06-06 11:09  NetTrafficDebugNetTrafficButton.pdb

     文件       2968  2012-06-06 11:09  NetTrafficDebugNetTrafficButton.res

     文件          0  2012-06-06 11:09  NetTrafficDebugNetTrafficButton.sbr

     文件      32199  2012-06-06 11:09  NetTrafficDebugNetTrafficButtonDlg.obj

     文件          0  2012-06-06 11:09  NetTrafficDebugNetTrafficButtonDlg.sbr

     文件     107152  2012-06-06 11:09  NetTrafficDebugStdAfx.obj

     文件    1375424  2012-06-06 11:09  NetTrafficDebugStdAfx.sbr

     文件     230400  2012-06-07 09:36  NetTrafficDebugvc60.idb

     文件     372736  2012-06-06 11:09  NetTrafficDebugvc60.pdb

     文件        615  2003-07-12 10:21  NetTrafficGlobals.h

     文件       2188  2003-07-13 19:16  NetTrafficMemDC.h

     文件       9567  2008-07-01 20:59  NetTrafficMFNetTraffic.cpp

     文件       1334  2003-07-12 12:32  NetTrafficMFNetTraffic.h

     文件      14818  2003-07-12 20:01  NetTrafficmftrafficbutton.cpp

     文件       3017  2003-07-12 10:51  NetTrafficmftrafficbutton.h

     文件      22288  2012-06-06 11:09  NetTrafficNetTrafficButton.aps

     文件       1441  2012-06-07 09:39  NetTrafficNetTrafficButton.clw

     文件        943  2003-07-12 19:14  NetTrafficNetTrafficButton.cpp

     文件       4742  2003-07-12 11:02  NetTrafficNetTrafficButton.dsp

     文件        585  2001-10-31 19:53  NetTrafficNetTrafficButton.dsw

     文件        831  2003-07-03 14:44  NetTrafficNetTrafficButton.h

............此处省略20个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)