QString filename;
QString url_ip = ui.lineEdit->text();
char* ch;
QByteArray ba = url_ip.toLatin1(); // must
ch = ba.data();
char* out_ip;
if (!IPv4_GET(ch, url_ip.length(), filename))
{
Toast::showCenterTip("不是合法的IP地址!", TOASTSTYLE::BLACK, nullptr);
return;
}
if (Ping(filename))//strPingIP 对方IP地址
{
Toast::showCenterTip("连接正常!", TOASTSTYLE::BLACK, nullptr);
}
else
{
Toast::showCenterTip("连接断开!", TOASTSTYLE::BLACK, nullptr);
}
bool IotSetWidget::Ping(QString strPingIP)//strPingIP 对方IP地址
{
//QString strPingIP = "192.168.1.88";
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() << p_stdout;
bool bPingSuccess = false;
if (p_stdout.contains("TTL=")) //通过特殊字符串进行判断ping是否成功
{
printf("Ping true\n");
bPingSuccess = true;
}
else
{
printf("Ping false\n");
bPingSuccess = false;
}
return bPingSuccess;
}
bool IotSetWidget::IPv4_GET(char* str, int len, QString &ip_url)
{
int a, b, c, d;
char* p = str;
for (int i = 0; i < len; i++)
{
if ((*p >= '0') && (*p <= '9'))
{
if (4 == sscanf(p, "%d.%d.%d.%d", &a, &b, &c, &d))
{
if (0 <= a && a <= 255
&& 0 <= b && b <= 255
&& 0 <= c && c <= 255
&& 0 <= d && d <= 255)
{
ip_url = QString::number(a) + "." + QString::number(b) + "." + QString::number(c) + "." + QString::number(d);
return true;
}
}
}
p++;
}
return false;
}