QT在Linux下获取网络类型
开发中遇到这样一个需求,需要判断当前网络的类型(wifi或者4G或者网线),在这里给大家一块分享下:
1、这里有一个linux指令:nmcli(见
如何在 Linux 里使用 nmcli 添加网桥 https://www.linuxidc.com/Linux/2018-04/151736.htm)
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;
}
- QT获取设备网络类型
- Qt linux获取cpu使用率、内存、网络收发速度、磁盘读写速度、磁盘剩余空间等
- iOS7+ 获取网络类型
- 获取安卓手机网络类型
- linux C++通过ntp协议获取网络时间
- qt获取本机网络信息
- Android程序:获取当前手机的网络类型
- Linux系统编程:获取指定目录下指定文件类型的数量
- Windows Phone 同步方式获取网络类型
- Linux下java获取CPU、内存、磁盘IO、网络带宽使用率
- linux 系统获取网络ip, mask, gateway, dns信息小程序
- Qt网络之获取本机网络信息
- PHP获取ip对应地区和使用网络类型的方法
- Qt-QFileIconProvider(获取文件图标、类型)
- iOS:关于获取网络类型和运营商信息
- linux获取网络信息函数
- linux c++ 获取基本类型的极值
- iOS 手机网络类型和运营商怎么获取
- java获取网络类型的方法
- linux 获取本地网络信息 -ip,mac ,等