<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>
    以文本方式查看主題

    -  曙海教育集團論壇  (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種得到一次值,就可以得到相應的流量值了。系統刷新的比較慢。我們就忍了吧。