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;}
通过QProcess在Linux环境下使用ping命令检测设备网络状态。代码示例中,根据输出是否包含'TTL='来判断ping操作是否成功。虽然实验可行,但未进行大规模测试。
&spm=1001.2101.3001.5002&articleId=116843473&d=1&t=3&u=7b5b69a3fa4e4515aa0ceb7f6c2f829d)
627

被折叠的 条评论
为什么被折叠?



