#include "networkDetection.h" networkDetection::networkDetection(QObject *parent) : QObject(parent) { flagRun = true; CmdListChanged = false; m_process = new QProcess(this); } networkDetection::~networkDetection() { delete m_process; } void networkDetection::dowork(int id, QStringList cmdlist) { m_cmd = cmdlist; m_id = id; QString result; while (flagRun) { m_process->start("cmd", m_cmd); m_process->waitForFinished(); // 等待指令执行完毕 result = m_process->readAll(); // 获取指令执行结果 // qDebug() << result; if (result.contains(QString("TTL="))) // 若包含TTL=字符串则认为网络在线 { // qDebug() << "在线"; emit resultReady(m_id, "在线"); } else { // qDebug() << "离线"; emit resultReady(m_id, "离线"); } // if (CmdListChanged) { // CmdListChanged = false; // return; // } // QThread::sleep(2); // 加sleep降低CPU占用率 } } void networkDetection::stop() { flagRun = false; } void networkDetection::DyChangeCmdList(QStringList changeCmdList) { m_cmd.clear(); m_cmd = changeCmdList; CmdListChanged = true; }