QT在linux下获取网络类型
程序员文章站
2022-11-06 23:52:42
开发中遇到这样一个需求,需要判断当前网络的类型(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;
}