以文本方式查看主题 - 曙海教育集团论坛 (http://sun4.cn/bbs/index.asp) -- Symbian开发 (http://sun4.cn/bbs/list.asp?boardid=46) ---- Symbian 深入讨论 RConnectionMonitor并用此来统计流量 (http://sun4.cn/bbs/dispbbs.asp?boardid=46&id=2064) |
-- 作者:wangxinxin -- 发布时间:2010-12-3 16:02:56 -- Symbian 深入讨论 RConnectionMonitor并用此来统计流量 今天来聊聊关于如何使用RConnectionMonitor来统计流量。 RConnectionMonitor被SYMBIAN封装的受不了。 大家详细看看OS 内核,把好好的一个API封装的想自杀拟的。 因为这种变态的封装使得我们好多参数都得不到,郁闷之极啊。 如果我们能得到流量,并定位到指定的程序该多好啊。 哈哈。很多事情都往往......但是总是美好的瑕想。 少费话了,看我们如何应用RConnectionMonitor这个来统计流量吧。 我们先来看看RConnectionMonitor这个的基本用法。 假定您已经习惯了Symbian的Observer模式。那么请先继承MConnectionMonitorObserv er吧 //初始化 void CMonitorNetWork::ConstructL() { TInt err = iConnMon.ConnectL(); iConnMon.NotifyEventL(*this); } //当发生所有事件时,都可以回调到这里 //比如新的连接,连接断开时都会回调 void CMonitorNetWork::EventL( const CConnMonEventBase &aEvent ) { case EConnMonCreateConnection: { TUint connectionId = eventCreate->ConnectionId(); //所有的新建的连接都会回调到这里 //我们可以得到连接的索引 //那么连接的索引对于我们来说有什么作用呢?哈哈当然有作用。 //让我们来看看下面的API。KDownlinkData哈哈是不是很惊喜可以得到下载的流量。 //对就是这样的。让我们来分析一下这个API。 //aConnectionId 连接索引,0 子连接,KDownlinkData 需要得到属性的值,iValue所得到的值 //GetUintAttribute( aConnectionId, 0, KDownlinkData, iValue, iStatus); } } //哈哈。我们搞清楚了GetUintAttribute的每一项是不是所有的事情都搞定了呢。 //当然不是,在测试中发现有时候得不到值。 void CMonitorFlow::GetDownLinkData(TUint aConnectionId) { iState = EGet; iMonitor.GetUintAttribute( aConnectionId, 0, KDownlinkData, iValue, iStatus); SetActive(); } //注意:在这里每1S种得到一次值,就可以得到相应的流量值了。系统刷新的比较慢。我们就忍了吧。 |