Я хочу сделать функцию проверки связи с Qt (и мне не нравится способ проверки связи системы выполнения QProcess).
Вот демонстрационный код,
void SimmplePing(const QString& sAddress, int port=80)
{
QTcpSocket messenger;
messenger.connectToHost(sAddress, port);
if (!messenger.waitForConnected(3000))
{
qDebug() << messenger.error();
}
else
{
qDebug() << "OK";
}
}
void test()
{
SimmplePing("182.34.19.222", 80);
}
Я тестирую его с помощью «192.168.0.1» (IP-адрес моего маршрутизатора) и «www.baidu.com» могут работать.
Но я тестирую «182.34.19.222» не удалось с сообщением об ошибке QAbstractSocket::SocketTimeoutError
.
Однако пинг его в системной cmd может работать правильно. Не мог понять почему.