Постараюсь более подробно описать проблему. Необходимо определить подключен или нет компьютер пользователя к Интернету. Двигался двумя путями - посредством QHttp или QNetworkAccessManager (проблемы аналогичны QHttp).
В первом случае:
http = new QHttp(this); // создал подключение
connect(http, SIGNAL(requestFinished(int, bool)),this, SLOT(httpRequestFinished(int, bool))); // по завершению запроса - смотрим была ошибка или нет
QString u = "
http://www.google.ru/";
QUrl url;
url.setUrl(u);
QHttp::ConnectionMode mode = url.scheme().toLower() == "https" ? QHttp::ConnectionModeHttps : QHttp::ConnectionModeHttp;
http->setHost(url.host(), mode, url.port() == -1 ? 0 : url.port());
QHttpRequestHeader header ("GET", url.path());
header.setValue("Host", url.host());
http->request(header); // посылаем запрос
void interfaces::httpRequestFinished(int requestId, bool error) // сюда попадаем, когда выполнился запрос
{
QString st = http->errorString();// смотрим была ли ошибка
// если нет, то ОК, иначе проверяем на код ошибки QHttp::HostNotFound и если true, решаем что нет подключения
}
Вроде все должно быть в порядке, но не работает:
a - какой url не передаем, хоть и нормальный (
http://www.google.ru/), хоть и полную ерунду ("
http://www.jasfiojnfoq.ru/"), в строке st - всегда значение "Unknown error"
б - если просто отключаю Интернет, то в метод httpRequestFinished программа не заходит (типо никогда не завершается request).
В QNetworkAccessManager использую такую же методику и теже проблемы - пункты а и б