QT在linux下获取网络类型
开发中遇到这样一个需求,需要判断当前网络的类型(wifi或者4G或者网线),在这里给大家一块分享下:
1、这里有一个linux指令:nmcli(大家自行百度即可)
2、nmcli device status 这个指令就会打印出你想要的东西
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; }