求可以统计网络流量的VC代码,就象是金山网镖下面的那样。。接收××K,发送××K,那种,会的千万帮忙阿。。。。
现在作个东西,需要统计现在的网络流量。是累加的,在VC++中实现
希望高手帮忙,谢谢了
---------------------------------------------------------------
winpcap有个统计模式,可以很好解决你的问题
---------------------------------------------------------------
BOOL Network()
{
DWORD dwIndex;
DWORD dwNumber;
DWORD dwResult;
ULONG OutBufLen;
IP_ADAPTER_INFO AdapterInfo;
PIP_ADDR_STRING pAddrString;
PIP_ADAPTER_INFO pAdapterNext;
MIB_IFROW IfRow;
OutBufLen = sizeof(IP_ADAPTER_INFO);
dwResult = GetAdaptersInfo(&AdapterInfo,&OutBufLen);
if(dwResult == ERROR_BUFFER_OVERFLOW)
{
GetAdaptersInfo(&AdapterInfo,&OutBufLen);
}
else if (dwResult != ERROR_SUCCESS)
{
printf("GetAdaptersInfo Error: %d/n",GetLastError());
return FALSE;
}
printf("/t/t=== Network Interface ===/n/n");
pAdapterNext = &AdapterInfo;
while(pAdapterNext != NULL)
{
printf("AdapterName:/t %s/n",pAdapterNext->AdapterName);
printf("Description:/t %s/n",pAdapterNext->Description);
dwIndex = pAdapterNext->Index;
printf("Address:/t ");
for(dwNumber = 0;dwNumber < pAdapterNext->AddressLength - 1; dwNumber++)
{
printf("%.2X-",pAdapterNext->Address[dwNumber]);
}
printf("%.2X/n",pAdapterNext->Address[dwNumber]);
printf("Type:/t/t ");
switch(pAdapterNext->Type)
{
case MIB_IF_TYPE_OTHER:
printf("Other/n");
break;
case MIB_IF_TYPE_ETHERNET:
printf("Ethernet/n");
break;
case MIB_IF_TYPE_FDDI:
printf("FDDI/n");
break;
case MIB_IF_TYPE_PPP:
printf("PPP/n");
break;
case MIB_IF_TYPE_LOOPBACK:
printf("LoopBack/n");
break;
case MIB_IF_TYPE_SLIP:
printf("Slip/n");
break;
default:
printf("/n");
break;
}
printf("IpAddressList:/t %s/t/t%s/n","IP Address","Subnet Mask");
pAddrString = &pAdapterNext->IpAddressList;
while(pAddrString != NULL)
{
printf("/t/t %-15s/t",pAddrString->IpAddress.String);
printf("%s/n",pAddrString->IpMask.String);
pAddrString = pAddrString->Next;
}
pAddrString = &pAdapterNext->GatewayList;
printf("GatewayList:/t %s/n",pAddrString->IpAddress.String);
pAddrString = pAddrString->Next;
while(pAddrString != NULL)
{
printf("/t/t %s/n",pAddrString->IpAddress.String);
pAddrString = pAddrString->Next;
}
if(pAdapterNext->DhcpEnabled != 0)
{
printf("DhcpServer:/t %s/n",pAdapterNext->DhcpServer.IpAddress.String);
pAddrString = pAdapterNext->DhcpServer.Next;
while(pAddrString != NULL)
{
printf("/t/t/t %s/n",pAddrString->IpAddress);
pAddrString = pAddrString->Next;
}
}
if(pAdapterNext->HaveWins != 0)
{
printf("PrimaryWinsSvr: %s/n",pAdapterNext->PrimaryWinsServer);
printf("SecondaryWinsSvr: %s/n",pAdapterNext->SecondaryWinsServer);
}
printf("LeaseObtained:/t %s",asctime(gmtime(&pAdapterNext->LeaseObtained)));
printf("LeaseExpires:/t %s/n",asctime(gmtime(&pAdapterNext->LeaseExpires)));
IfRow.dwIndex = dwIndex;
if((dwResult = GetIfEntry(&IfRow)) != NO_ERROR)
{
printf("GetIfEntry Error: %d/n",dwResult);
break;
}
printf("MTU:/t/t %d/n",IfRow.dwMtu);
printf("Speed:/t/t %d Kbps/n",IfRow.dwSpeed/1000);
printf("OperStatus:/t ");
switch(IfRow.dwOperStatus)
{
case MIB_IF_OPER_STATUS_NON_OPERATIONAL:
printf("LAN Adapter Disabled/n");
break;
case MIB_IF_OPER_STATUS_UNREACHABLE:
printf("WAN Adapter Disconnected/n");
break;
case MIB_IF_OPER_STATUS_DISCONNECTED:
printf("LAN Adapters Disconnected or WAN Adapters no Carrier/n");
break;
case MIB_IF_OPER_STATUS_CONNECTING:
printf("WAN Adapter Connecting/n");
break;
case MIB_IF_OPER_STATUS_CONNECTED:
printf("WAN Adapter Connected/n");
break;
case MIB_IF_OPER_STATUS_OPERATIONAL:
printf("LAN Adapter Default Status/n");
break;
default:
printf("/n");
break;
}
printf("Unknown Protocol: %d/n/n",IfRow.dwInUnknownProtos);
printf("/t%12s%12s%10s/t%s/n","Unicast","NUnicast","Error","Bytes");
printf("%s/t%12d%12d%10d/t%d/n","Send:",IfRow.dwOutUcastPkts,IfRow.dwOutNUcastPkts,IfRow.dwOutErrors,IfRow.dwOutOctets);
printf("%s%12d%12d%10d/t%d/n","Receive:",IfRow.dwInUcastPkts,IfRow.dwInNUcastPkts,IfRow.dwInErrors,IfRow.dwInOctets);
printf("%s/t%12d%12d%10d/t%d/n","Total:",
IfRow.dwInUcastPkts + IfRow.dwOutUcastPkts,
IfRow.dwInNUcastPkts + IfRow.dwOutNUcastPkts,
IfRow.dwInErrors + IfRow.dwOutErrors,
IfRow.dwInOctets + IfRow.dwOutOctets);
pAdapterNext = pAdapterNext->Next;
}
return TRUE;
}
求可以统计网络流量的VC代码,就象是金山网镖下面的那样
最新推荐文章于 2025-08-06 23:34:35 发布