| 以文本方式查看主題 - 曙海教育集團(tuán)論壇 (http://mikehunterok.com/bbs/index.asp) -- Symbian開發(fā) (http://mikehunterok.com/bbs/list.asp?boardid=46) ---- Symbian 深入討論 RConnectionMonitor并用此來統(tǒng)計(jì)流量 (http://mikehunterok.com/bbs/dispbbs.asp?boardid=46&id=2064) |
| -- 作者:wangxinxin -- 發(fā)布時(shí)間:2010-12-3 16:02:56 -- Symbian 深入討論 RConnectionMonitor并用此來統(tǒng)計(jì)流量 今天來聊聊關(guān)于如何使用RConnectionMonitor來統(tǒng)計(jì)流量。 RConnectionMonitor被SYMBIAN封裝的受不了。 大家詳細(xì)看看OS 內(nèi)核,把好好的一個(gè)API封裝的想自殺擬的。 因?yàn)檫@種變態(tài)的封裝使得我們好多參數(shù)都得不到,郁悶之極啊。 如果我們能得到流量,并定位到指定的程序該多好啊。 哈哈。很多事情都往往......但是總是美好的瑕想。 少費(fèi)話了,看我們?nèi)绾螒?yīng)用RConnectionMonitor這個(gè)來統(tǒng)計(jì)流量吧。 我們先來看看RConnectionMonitor這個(gè)的基本用法。 假定您已經(jīng)習(xí)慣了Symbian的Observer模式。那么請(qǐng)先繼承MConnectionMonitorObserv er吧 //初始化 void CMonitorNetWork::ConstructL() { TInt err = iConnMon.ConnectL(); iConnMon.NotifyEventL(*this); } //當(dāng)發(fā)生所有事件時(shí),都可以回調(diào)到這里 //比如新的連接,連接斷開時(shí)都會(huì)回調(diào) void CMonitorNetWork::EventL( const CConnMonEventBase &aEvent ) { case EConnMonCreateConnection: { TUint connectionId = eventCreate->ConnectionId(); //所有的新建的連接都會(huì)回調(diào)到這里 //我們可以得到連接的索引 //那么連接的索引對(duì)于我們來說有什么作用呢?哈哈當(dāng)然有作用。 //讓我們來看看下面的API。KDownlinkData哈哈是不是很驚喜可以得到下載的流量。 //對(duì)就是這樣的。讓我們來分析一下這個(gè)API。 //aConnectionId 連接索引,0 子連接,KDownlinkData 需要得到屬性的值,iValue所得到的值 //GetUintAttribute( aConnectionId, 0, KDownlinkData, iValue, iStatus); } } //哈哈。我們搞清楚了GetUintAttribute的每一項(xiàng)是不是所有的事情都搞定了呢。 //當(dāng)然不是,在測(cè)試中發(fā)現(xiàn)有時(shí)候得不到值。 void CMonitorFlow::GetDownLinkData(TUint aConnectionId) { iState = EGet; iMonitor.GetUintAttribute( aConnectionId, 0, KDownlinkData, iValue, iStatus); SetActive(); } //注意:在這里每1S種得到一次值,就可以得到相應(yīng)的流量值了。系統(tǒng)刷新的比較慢。我們就忍了吧。 |