開發中遇到這樣一個需求,需要判斷當前網路的型別(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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/159091.html
標籤:Linux
上一篇:Linux—編譯安裝詳解
下一篇:linux組管理和權限管理
