QT开发PingIP

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值