求有流量时才计时的网络计时器

来源:百度知道 编辑:UC知道 时间:2024/05/28 07:16:57
我用的是移动的包时gprs套餐!每月可以用100个小时,而移动的计费方式是这样的:上网连接后有流量才计时,没有流量是不计时的,不像电信的那些只要连接上了就计费的那种,比如你上qq,有时你不聊天时是没有流量的,这时就是不计费的,虽然qq还是在线的!而现在网上的很多计时器都是连接了就计算时间的,那种我是不需要的!

下面是基于ace定时器写的网络流量计算代码。你只需要把里面的时间间隔设为你需要的,比如1秒。然后定义一个时间变量,只在每次有流量的时候进行累加,就是网络速度不为0的时候。不过这个是算电脑上网卡流量的~还需要ace的库才可以跑~代码如下:

用这个要先配置好ace,其实不用ace的话直接在个while里面sleep几秒再用handle_timeout也是可以的

#include "ace/Reactor.h"
#include <windows.h>

#include "Iphlpapi.h"
#include "iprtrmib.h"

#include <iostream> //清屏

#include "ace/Event_Handler.h"
#include "ace/Timer_Heap_T.h"
#include "ace/Timer_Queue_Adapters.h"

typedef ACE_Event_Handler_Handle_Timeout_Upcall<ACE_Null_Mutex> Upcall;
typedef ACE_Timer_Heap_T<ACE_Event_Handler *,Upcall,ACE_Null_Mutex> Timer_Heap;
//typedef ACE_Timer_Heap_Iterator_T<ACE_Event_Handler *,Upcall,ACE_Null_Mutex> Timer_Heap_Iterator;
typedef ACE_Thread_Timer_Queue_Adapter<Timer_Heap> Thread_Timer_Queue;

//DWORD inde