91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 54KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發布日期: 2021-08-08
  • 語言: C/C++
  • 標簽: 流量統計??

資源簡介

用c++編寫一個流量統計系統 為了方便網絡編程,90年代初,由Microsoft聯合了其他幾家公司共同制定了一套WINDOWS下的網絡編程接口,即Windows Sockets規范,它不是一種網絡協議,而是一套開放的、支持多種協議的Windows下的網絡編程接口。本篇論文主要是介紹了在TCP/IP基礎上利用winsock2對網卡進行編程,以達到網絡流量監測的目的。論文首先介紹了TCP/IP協議,旨在介紹IP,TCP,UDP等比較重要的協議。主要是介紹IP頭,TCP頭,UDP頭的特點,以便從IP頭中可以獲取源地址,目的地址,協議類型等信息。在隨后的章節中提出了Socket的概念,Socket實際上提供了一個通信端口使所有擁有Socket的端口的計算機之間能夠相互通信,在本論文中主要說明了socket的建立,監聽和撤銷的過程。具體到程序實現中,對網卡混雜模式的設置是通過原始套接字(raw socket)來實現的。為了讓原始套接字能接受所有的數據,還需要通過將SOCK_RAW設置成SIO_RCVALL。對數據包的獲取通過recv()函數來完成。最后要完成的工作就是對所捕獲的IP數據包進行分析以提取出我們所需要的信息。在論文的最后是旨在說明進一步工作的展開。 關鍵字: TCP/IP,Winsock,原始套接字,NetBios

資源截圖

代碼片段和文件信息


#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

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

????.......???????615??2003-07-12?10:21??NetTraffic\Globals.h

????.......??????9567??2003-07-13?21:35??NetTraffic\MFNetTraffic.cpp

????.......??????1334??2003-07-12?12:32??NetTraffic\MFNetTraffic.h

????.......??????2188??2003-07-13?19:16??NetTraffic\MemDC.h

????.......?????21960??2005-07-18?23:42??NetTraffic\NetTrafficButton.aps

????.......??????1441??2005-07-18?23:42??NetTraffic\NetTrafficButton.clw

????.......???????943??2003-07-12?19:14??NetTraffic\NetTrafficButton.cpp

????.......??????4742??2003-07-12?11:02??NetTraffic\NetTrafficButton.dsp

????.......???????585??2001-10-31?19:53??NetTraffic\NetTrafficButton.dsw

????.......???????831??2003-07-03?14:44??NetTraffic\NetTrafficButton.h

????.......????156672??2005-07-18?23:42??NetTraffic\NetTrafficButton.ncb

????.......?????59904??2005-07-18?23:42??NetTraffic\NetTrafficButton.opt

????.......??????2988??2005-07-18?23:42??NetTraffic\NetTrafficButton.plg

????.......??????6307??2003-07-13?19:19??NetTraffic\NetTrafficButton.rc

????.......??????4917??2003-07-12?20:32??NetTraffic\NetTrafficButtonDlg.cpp

????.......??????1181??2003-07-12?20:19??NetTraffic\NetTrafficButtonDlg.h

????.......??????4290??2001-10-31?19:53??NetTraffic\ReadMe.txt

????.......????????29??2003-07-12?19:36??NetTraffic\StdAfx.cpp

????.......???????505??2003-07-03?14:35??NetTraffic\StdAfx.h

????.......?????14818??2003-07-12?20:01??NetTraffic\mftrafficbutton.cpp

????.......??????3017??2003-07-12?10:51??NetTraffic\mftrafficbutton.h

????.......???????832??2003-07-12?20:18??NetTraffic\resource.h

????.......??????1078??2003-07-12?10:02??NetTraffic\res\Mainframe.ico

????.......??????1078??2003-07-12?10:02??NetTraffic\res\NetTrafficButton.ico

????.......???????432??2001-10-31?19:53??NetTraffic\res\NetTrafficButton.rc2

?????目錄??????????0??2006-06-26?11:01??NetTraffic\res

?????目錄??????????0??2006-06-26?11:01??NetTraffic\Debug

?????目錄??????????0??2006-06-26?11:01??NetTraffic

-----------?---------??----------?-----??----

???????????????302472????????????????????29

............此處省略2個文件信息

評論

共有 條評論