Сетевой траффик (RasGetConnectionStatistics vs GetIfTable)?
code:
void GetInfo_IfTable(void)
{
MIB_IFTABLE mit[10];
ULONG mitSize = sizeof(mit);
GetIfTable(mit, &mitSize, TRUE);
char buf[1024];
for(DWORD i=0; i<mit[0].dwNumEntries; i++)
{
mit[0].table.bDescr[mit[0].table.dwDescrLen]='\0';
sprintf(buf, "Interface:\t%,\nData:\t\tIn=%u bytes, Out=%u bytes,\n",mit[0].table.bDescr, mit[0].table.dwInOctets, mit[0].table.dwOutOctets);
MessageBox(0, buf, "func: GetIfTable", MB_OK);
}
}
void GetInfo_RAS(void)
{
DWORD dwCb = sizeof(RASCONN);
DWORD dwErr = ERROR_SUCCESS;
DWORD dwConnections = 0;
RASCONN* lpRasConn = NULL;
char buf[1024];
lpRasConn = (tagRASCONNA *)HeapAlloc(GetProcessHeap(), 0, dwCb);
lpRasConn->dwSize = sizeof(RASCONN);
dwErr = RasEnumConnections(lpRasConn, &dwCb, &dwConnections);
if (ERROR_SUCCESS == dwErr)
{
DWORD i;
for (i = 0; i < dwConnections; i++)
{
RAS_STATS lpStatistics;
lpStatistics.dwSize=sizeof(RAS_STATS);
RasGetConnectionStatistics(lpRasConn.hrasconn, &lpStatistics);
sprintf(buf, "Connection: \t%s, \nDevice: \t\t%s, \nData:\t\tIn=%u bytes, Out=%u bytes\n", lpRasConn.szEntryName, lpRasConn.szDeviceName, lpStatistics.dwBytesRcved, lpStatistics.dwBytesXmited);
MessageBox(0, buf, "func: RasGetConnectionStatistics", MB_OK);
}
}
else
{
sprintf(buf, "RasEnumConnections failed: Error = %d\n", dwErr);
MessageBox(0, buf, "func: RasGetConnectionStatistics", MB_OK);
}
HeapFree(GetProcessHeap(), 0, lpRasConn);
lpRasConn = NULL;
}
ПОЧЕМУ выдаются разные данные? может быть я неправильно считаю байты, тогда как правильно учитывать их? что с чем складывать?