2016-05-25 4 views
0

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

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

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())); 

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

Что я делаю неправильно?

Спасибо.

ответ

0

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