Ubuntu中基于QT的系统网线连接状态的实时监视
1.必要準(zhǔn)備
???????? 需包: #include <QNetworkInterface>
2.實(shí)現(xiàn)獲取當(dāng)前的網(wǎng)線連接狀態(tài)
?????? 以下是自己在網(wǎng)絡(luò)上搜到的一個(gè)解決方法,且沒有加入iface.flags().testFlag(QNetworkInterface::IsRunning) 這一邏輯判斷,經(jīng)測(cè)試實(shí)時(shí)性極不可靠,在虛擬機(jī)里調(diào)試時(shí)發(fā)現(xiàn)有時(shí)候有10s左右的延遲,但運(yùn)行在嵌入式系統(tǒng)上時(shí)幾乎就是一擺設(shè)。于是自己閱讀QT幫助嘗試了多種方法并加以改造,發(fā)現(xiàn)加入了第二項(xiàng)條件判斷后,結(jié)果就非常的可靠了。
[cpp]?view plaincopy- bool?isConnectedToNetwork()??
- {??
- ????QList<QNetworkInterface>?ifaces?=?QNetworkInterface::allInterfaces();??
- ????bool?isConnected?=?false;??
- ??
- ????for?(int?i?=?0;?i?<?ifaces.count();?i++)??
- ????{??
- ????????QNetworkInterface?iface?=?ifaces.at(i);??
- ????????if?(?iface.flags().testFlag(QNetworkInterface::IsUp)??
- ?????????????&&?iface.flags().testFlag(QNetworkInterface::IsRunning)??
- ?????????????&&?!iface.flags().testFlag(QNetworkInterface::IsLoopBack)??
- ??????????????)??
- ????????{??
- ??
- ????????????//?this?loop?is?important??
- ????????????for?(int?j=0;?j<iface.addressEntries().count();?j++)??
- ????????????{??
- ????????????????//?we?have?an?interface?that?is?up,?and?has?an?ip?address??
- ????????????????//?therefore?the?link?is?present??
- ??
- ????????????????//?we?will?only?enable?this?check?on?first?positive,??
- ????????????????//?all?later?results?are?incorrect??
- ????????????????if?(isConnected?==?false)??
- ????????????????????isConnected?=?true;??
- ????????????}??
- ????????}??
- ??
- ????}??
- ??
- ????return?isConnected;??
- }??
3. 實(shí)時(shí)性監(jiān)測(cè)實(shí)現(xiàn)
??? 實(shí)時(shí)性的實(shí)現(xiàn)是利用了QT的定時(shí)器和信號(hào)與槽機(jī)制。這個(gè)大家甚至比我都清楚,就不啰嗦了。
轉(zhuǎn)自:http://blog.csdn.net/u010492096/article/details/40110749
轉(zhuǎn)載于:https://www.cnblogs.com/liushui-sky/p/6479466.html
總結(jié)
以上是生活随笔為你收集整理的Ubuntu中基于QT的系统网线连接状态的实时监视的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 源码-0205-02--聊天布局
- 下一篇: 求一个微信网名男两个字网名