Обнаружение подключения ip-камеры с помощью QNetworkAccessManager?

Я использую две ip-камеры от Axis Communications для моего приложения. Я хочу проверить, отключены ли камеры. Возможно ли это сделать с помощью QNetworkAccessManagerand QNetworkReply?

Прототип того, что я пробовал, выглядит следующим образом:

QNetworkAccessManager *m_networkAccessManager = new QNetworkAccessManager();
QNetworkReply *m_networkReply = m_networkAccessManager->get(QNetworkRequest(camUrl));
if (!m_networkReply)
{
   delete m_networkAccessManager;
   qDebug()<<"Camera not found"<<endl;
}

connect(m_networkReplyCam, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(cameraDisconnected(QNetworkReply::NetworkError)));

void MainWindow::cameraDisconnected(QNetworkReply::NetworkError)
{
    qDebug()<<"Camera Disconected"<<endl;
}

Но слотcameraDisconnected, кажется, никогда не вызывается. Я также попытался соединиться с finished()сигналом от QNetworkReplyследующего:

connect(m_networkReplyCam, SIGNAL(finished()), this, SLOT(cameraDisconnected()));

Но даже тогда слот никогда не называется.

Что я делаю не так?

Спасибо.

1 ответ

  1. Ваш запрос будет таймаут через некоторое время, если хост недоступен. Нет встроенного способа установить определенный тайм-аут QNetworkRequestили QNetworkAccessManagerтак одна возможность заключается в том, чтобы реализовать свой собственный таймер, чтобы прервать после определенного времени. Есть несколько примеров, чтобы сделать это, как 1, 2 и 3 .