From 85d30d3db52ac82bbd132bed2200b8034232766d Mon Sep 17 00:00:00 2001 From: fong Date: Tue, 30 Jan 2024 21:17:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=AF=E4=BB=A5ping=E4=BA=86=20Signed-off-by?= =?UTF-8?q?:=20fong=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ip_sacaner/scan_run.cpp | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/ip_sacaner/scan_run.cpp b/ip_sacaner/scan_run.cpp index 53bd4ba..617cbea 100644 --- a/ip_sacaner/scan_run.cpp +++ b/ip_sacaner/scan_run.cpp @@ -26,6 +26,17 @@ quint32 ipv4str_to_int(const QString& ipstr) } } +bool Ping(QString strPingIP) +{ + QProcess pingProcess; + QString strArg = "ping " + strPingIP + " -n 1 -i 2"; + pingProcess.start(strArg, QIODevice::ReadOnly); + pingProcess.waitForFinished(-1); + QString p_stdout = QString::fromLocal8Bit(pingProcess.readAllStandardOutput()); + return p_stdout.contains("TTL="); +} + + trytryping::trytryping() { @@ -34,28 +45,15 @@ trytryping::trytryping() void trytryping::run() { emit try_one(1); - qint16 exitCode=0; + QString ip=this->ipstr; - #ifdef Q_OS_WIN - QString strArg = "ping " + ip + " -n 1 -i 2"; - exitCode = QProcess::execute(strArg); - #else - //其他平台(Linux或Mac) - exitCode = QProcess::execute("ping", QStringList() << "-c 1" << "-t 2" << ip)); - #endif - if(0 == exitCode) + + if(Ping(ip)) { - //it's alive - //qDebug() << "shell ping " + ip + " sucessed!"; emit connect_ok(QString("Ping ").append(ip)); - //发射该IP在线的信号 - - } else { - //qDebug() << "shell ping " + ip + " failed!"; - //发射IP离线的信号 - } + emit try_one(-1); }