搞了好久了,流量监控,代码处理上不太好,不过勉强可以用,希望大神能指导一下,完善一下
#include <windows.h> #include <iphlpapi.h> #include <stdio.h> #pragma comment ( lib, "iphlpapi.lib" ) int wangka(int last_totle) { MIB_IFTABLE *pIfTable = NULL; ULONG dwSize = 0; DWORD dwRet; dwRet = GetIfTable( pIfTable, &dwSize, TRUE ); if ( dwRet == ERROR_INSUFFICIENT_BUFFER ) { pIfTable = ( MIB_IFTABLE * ) new char[dwSize]; if ( pIfTable != NULL ) { dwRet = GetIfTable( pIfTable, &dwSize, TRUE ); if ( dwRet == NO_ERROR ) { printf( "dwNumEntries = %u\n", pIfTable->dwNumEntries ); int i=13; //for (unsigned int i=0; i<(pIfTable->dwNumEntries); i++ ) // { if (pIfTable->table[i].dwType=MIB_IF_TYPE_PPP&& pIfTable->table[i].dwOutOctets>0&& pIfTable->table[i].dwInOctets>0) { printf("table[%1d].dwIndex = %u\n",i,(pIfTable->table[i]).dwIndex ); //printf("out = %d\n",pIfTable->table[i].dwOutOctets); //printf("in = %d\n",pIfTable->table[i].dwInOctets); //printf("dwSpeed = %u\n\n",(pIfTable->table[i]).dwSpeed ); int recflow=pIfTable->table[i].dwInOctets-last_totle; last_totle=pIfTable->table[i].dwInOctets; printf("下载=%dB\n",recflow); } // } } else { printf( "Some error occured!\n" ); } } else { printf( "Memory allocate failue\n" ); } } else { printf( "Some error occured!\n" ); } return last_totle; } int main( ) { int last_totle=0; while(1) { Sleep(2000); system("cls"); last_totle=wangka(last_totle); } return 0; }