開發中遇到這樣一個需求,需要判斷當前網路的類型(wifi或者4G或者網線),在這裡給大家一塊分享下: 1、這裡有一個linux指令:nmcli(大家自行百度即可) 2、nmcli device status 這個指令就會列印出你想要的東西 3、如何用QT去調取這個指令獲取結果來進行上報呢?來一段代碼 ...
開發中遇到這樣一個需求,需要判斷當前網路的類型(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; }