SOCKET sRaw = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
if(ioctlsocket(sRaw, SIO_RCVALL, &dwValue) != 0)
我把它设为混杂模式hThread = CreateThread(NULL, 0, FluxThread, (LPVOID)sRaw, 0, NULL);int rc;
int oldLength = 0;    while (1)
    {
        rc = WaitForMultipleObjects(1, &hThread, TRUE, 1000);
        if (rc == WAIT_FAILED)
        {
printf(" error " );
        }
        else if (rc == WAIT_TIMEOUT)
        {
            ULONG       bps;            bps = gLength - oldLength;
printf("\n\n-------------------------------\n");
            printf("bytes per second read: %lu\n", bps);
oldLength = gLength;
        }
        else
        {
            break;
        }
    }bps是每秒的流量值
gLength是我从开始的总流量
oldLength是上一次的总流量
DWORD WINAPI FluxThread(LPVOID lpParam)
{
// 开始接收封包
char buff[1024];
int nRet;
SOCKET s; s = (SOCKET) lpParam; while(TRUE)
{
nRet = recv(s, buff, 1024, 0);
if(nRet > 0)
{
gLength += nRet;
}
}
}
我把收到的值加至gLength求的值过小总是几K但是我的实际流量是几十K