qt检测网络状态 Linux,Qt检测设备是否在线(Ping)

通过QProcess在Linux环境下使用ping命令检测设备网络状态。代码示例中,根据输出是否包含'TTL='来判断ping操作是否成功。虽然实验可行,但未进行大规模测试。

Talk is cheap. Show me the code!

我的主要代码:

QProcess pingProcess;

QString strArg = "ping " + strPingIP + " -n 1 -i 2"; //strPingIP 为设备IP地址

pingProcess.start(strArg,QIODevice::ReadOnly);

pingProcess.waitForFinished(-1);

QString p_stdout = QString::fromLocal8Bit( pingProcess.readAllStandardOutput());

qDebug()<

bool bPingSuccess = false;

if(p_stdout.contains("TTL=")) //我采用这个字符来判断 对不对?

{

bPingSuccess = true;

}else

{

bPingSuccess = false;

}

PS:实验是可以的! 没有大规模测试!

参考文章:

....

参考代码为:

//没实验成功,思路符合

QProcess pingProcess;

QString exec = "ping";

QStringList params;

params << "-c" << "1" << IP;

pingProcess.start(exec,params,QIODevice::ReadOnly);

pingProcess.waitForFinished(-1);

QString p_stdout = pingProcess.readAllStandardOutput();

QString p_stderr = pingProcess.readAllStandardError();

//这段代码 我在Linux上测试可以,但是windows永远是0 == exitCode

bool ping_ip(QString ip)

{

int exitCode;

#ifdef _TTY_ARMV4_

QString strArg = "ping -s 1 -c 1 " + ip; //linux平台下的格式

#else

QString strArg = "ping " + ip + " -n 1 -i 2"; //windows下的格式

#endif

exitCode = QProcess::execute(strArg);

if(0 == exitCode)

{

//it's alive

qDebug() << "shell ping " + ip + " sucessed!";

return true;

}

else

{

qDebug() << "shell ping " + ip + " failed!";

return false;

}

}

QProcess pingProcess;

QString strArg = "ping " + strPingIP + " -n 1 -i 2"; //strPingIP 为设备IP地址

pingProcess.start(strArg,QIODevice::ReadOnly);

pingProcess.waitForFinished(-1);

QString p_stdout = QString::fromLocal8Bit( pingProcess.readAllStandardOutput());

qDebug()<

bool bPingSuccess = false;if(p_stdout.contains("TTL=")) //我采用这个字符来判断 对不对?{ bPingSuccess = true;}else{ bPingSuccess = false;}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值