以文本方式查看主題 - 曙海教育集團論壇 (http://www.hufushizhe.com/bbs/index.asp) -- Symbian開發 (http://www.hufushizhe.com/bbs/list.asp?boardid=46) ---- Symbian 深入討論 RConnectionMonitor并用此來統計流量 (http://www.hufushizhe.com/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種得到一次值,就可以得到相應的流量值了。系統刷新的比較慢。我們就忍了吧。 |