如何使用QProcess通过Ping检测"Network is Unreachable"?
How to Detect "Network is Unreachable" via Ping using QProcess?
我在使用 QProcess ping 到目标/本地 IP 时遇到问题。当 ping 为成功时,QProcess 返回"0",而当 ping 给出"网络无法访问"错误(在终端上手动查看)时,也返回"0"。
实际上,我需要检查应用程序中的网络连接。为了实现它,我使用了一个非常简单的概念,即使用 QProcess 进行 ping。如果有任何网络错误,我需要弹出一个消息框,否则应用程序正常启动而没有任何弹出消息。
这是我的ping代码:
bool App::pingPcuStatus(void)
{
const QString IP ="192.168.49.44";
bool ret = false;
int status;
if ( IP == "0.0.0.0") {
status = 1;
}
else {
QProcess pingProcess;
QString exec = "ping";
QStringList params;
params << "-c" << "1" << IP;
status = pingProcess.execute(exec, params); //status = 0 , if Ping Successfull
pingProcess.close();
}
ret = (status) ? false : true;
return ret;
}
但是在调试时我发现,即使我没有连接到网络,它也返回"true"。(我尝试在终端上使用相同的命令手动ping,它给出"网络无法访问"错误)。
这在我的情况下导致了一个大错误。
使用 QProcess 或任何其他解决方法捕获此错误的最佳方法是什么???
欢迎任何想法或建议。
https://stackoverflow.com/a/2148360/793796 的原始答案:
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();
然后你可以解析 stdout & stderr。
相关文章:
- Why is UINT32_MAX + 1 = 0?
- C++错误:"error: int aaa::bbb is protected within this context"
- 创建具有 new in 函数和"this is nullptr"异常的对象
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- Is !NaN not a NaN?
- Directx 11 - CompileFromFile() is not compiling
- Centos7 g++ "to_string is not in a member of std"
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- Where is std::hardware_destructive_interference_size?
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- What is unordered_set in C++
- 你如何理解"std: :forward is just syntactic sugar"?这是真的吗?
- C++ "error: use of overloaded operator '*' is ambiguous"似乎只有一场比赛
- C++ is calculating wrong
- Is it good to use SDL_PIXELFORMAT_UNKNOWN?
- reference_wrapper导致"incomplete type is not allowed"
- 为什么即使在定义之后仍存在"Identifier is undefined error "?
- 结构中的错误"Incomplete type is not allowed"
- Crash in boost::archive::text_iarchive in_archive {is} boost
- 如何使用QProcess通过Ping检测"Network is Unreachable"?