QT在linux下获取网络类型

匿名 (未验证) 提交于 2019-12-02 21:59:42

开发中遇到这样一个需求,需要判断当前网络的类型(wifi或者4G或者网线),在这里给大家一块分享下:

1、这里有一个linux指令:nmcli(大家自行百度即可)

3、如何用QT去调取这个指令获取结果来进行上报呢?来一段代码吧

//执行linux指令获取返回结果 QString Common::executeLinuxCmd(QString strCmd) {     QProcess p;     p.start("bash", QStringList() <<"-c" << strCmd);     p.waitForFinished();     QString strResult = p.readAllStandardOutput();     return strResult; }  //获取网络状态码 int PLC::networkStatus() {     QString strDevice = Common::executeLinuxCmd("nmcli device status");     QStringList listDevice = strDevice.split("\n");     QString strBin = "";     QString strWifi = "0";     QString str4G = "0";     QString strWired = "0";     foreach(QString tmpStr , listDevice)     {         QStringList strSplit = tmpStr.split(" ");         QStringList strTotal;         foreach(QString str, strSplit)         {             if(str != "")             {                 strTotal.append(str);             }         }         if(strTotal.size() >= 3)         {             if(strTotal.at(2) == "connected")             {                 if(strTotal.at(1) == "wifi")                 {                     strWifi = "1";                 }else if(strTotal.at(1) == "ethernet")                 {                     strWired = "1";                 }else if(strTotal.at(1) == "gsm")                 {                     str4G = "1";                 }             }         }     }     strBin.append(str4G).append(strWifi).append(strWired);     int result = binToDec(strBin);     return result; } 

  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!