我想知道上网的流量,不知道有什么api函数之类,还是有什么其他的方法,

解决方案 »

  1.   

    void CTrafficMonitorInfo::NetworkTraffic()
    {
    DWORD             dwIndex;
    DWORD             dwResult;
    ULONG             OutBufLen;
    IP_ADAPTER_INFO   AdapterInfo;
       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());
    } pAdapterNext = &AdapterInfo;
    while(pAdapterNext != NULL)
    {
    dwIndex = pAdapterNext->Index; IfRow.dwIndex = dwIndex;
    if((dwResult  = GetIfEntry(&IfRow)) != NO_ERROR)
    {
    printf("GetIfEntry Error: %d\n",dwResult);
    break;
    } 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);
    }
    稍微改一下,放定时器里面就可以了。