alex_lipJan. 16, 2018, 1:55 a.m.
Как проверить доступность сервера
IP сервера с которым я работаю может выглядеть по разному в зависимости от того внутри сети я нахожусь или во вне. Соответственно когда я запускаю программу - мне нужно понять по какому адресу доступен сервер по внешнему или по внутреннему(или вообще не доступен). Сейчас я вот так подключаюсь к серверу
url_sea_text = server_ip_loc+"search/sea_text/"+poisk_txt+"/"+user_id; networkManager_sea_text = new QNetworkAccessManager(); QNetworkReply *replay_sea_text = networkManager_sea_text->get(QNetworkRequest(QUrl(url_sea_text))); connect(networkManager_sea_text, &QNetworkAccessManager::finished, this, &AppCore::onResult_sea_text); connect(replay_sea_text, SIGNAL(downloadProgress(qint64,qint64)),this, SLOT(updateDownloadProgress(qint64,qint64)));
NetworkAccessManager работает асинхронно. И чтобы сильно долго не ждать надо каким-то образом по таймеру проверить, что ответа нет и пробовать другой адрес. Насколько я понимаю мне в процедуру
void AppCore::updateDownloadProgress(qint64 bytesRead, qint64 totalBytes) { QTextStream cout(stdout); cout << QString::number(bytesRead) +"/"+QString::number(totalBytes) << endl; qDebug() <<"count"<< count; if (totalBytes>0) { count=bytesRead/totalBytes; } if (count>0.2) { emit sendToQml(count); } }Добавить проверку по таймеру, который нужно запустить в момент создания коннекта. И если на заданный тайм-аут
bytesRead =0то делать replay_sea_text.abort() ?
У Вас есть урок по ping - но как мне кажется в этом случае пинг не достаточен. И он не кросс - платформен.
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.Do you like it? Share on social networks!
AD
- Akiv Doros
- Nov. 11, 2024, 2:58 p.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:50points,
- Rating points-4
m
- molni99
- Oct. 26, 2024, 1:37 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:80points,
- Rating points4
m
- molni99
- Oct. 26, 2024, 1:29 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:20points,
- Rating points-10
Last comments
Django - Tutorial 055. How to write auto populate field functionality Freckles because of several brand names retin a, atralin buy generic priligy
QML - Tutorial 035. Using enumerations in QML without C ++ priligy cvs 24 Together with antibiotics such as amphotericin B 10, griseofulvin 11 and streptomycin 12, chloramphenicol 9 is in the World Health Organisation s List of Essential Medici…
Qt/C++ - Lesson 052. Customization Qt Audio player in the style of AIMP It decreases stress, supports hormone balance, and regulates and increases blood flow to the reproductive organs buy priligy online safe Promising data were reported in a PDX model re…
Heap sorting algorithm The role of raloxifene in preventing breast cancer priligy precio
PyQt5 - Lesson 006. Work with QTableWidget buy priligy 60 mg 53 have been reported by Javanovic Santa et al
Now discuss on the forum
добавить qlineseries в функции buy priligy senior brother Chu He, whom he had known for many years
Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
IscanderCheOct. 31, 2024, 3:43 p.m.
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
ИМ
Реализация навигации по разделам Спасибо Евгений!
Игорь МаксимовOct. 3, 2024, 4:05 a.m.
Добрый день!
Теоретически можно использовать QTcpSocket, у него есть метод connectToHost.
Спасибо. Попробую. Проблема в том, что сервер может пинговаться, но служба не работать(не выдавать нужные ссылки - у меня же на серваке сервер приложений ORDS крутится). Но это уже другая проблема. Но ее тоже надо обработать. И в этом случае QNetworkAccessManager все-таки предпочтителен. Буду пробовать.
Для QTcpSocket - насколько я понял - необходимы настройки прокси сервера(если он есть) - не хочется с этим возиться.
Как и писали на форуме ожидание ответа от connect(networkManager_news, &QNetworkAccessManager::finished, this, &AppCore::onResult_net); составляет 45 секунд. Очень долго.
Как проверить что спустя 10 секунд connect(networkManager_news, &QNetworkAccessManager::finished, this, &AppCore::onResult_net); &QNetworkAccessManager::finished - не финишировал?
Сделайте в классе AppCore некоторую переменную, которая будет индикатором финиширования. Если QNetworkAccessManager::finished ещё не финишировал, то переменная должна иметь значение false, если финишировал, то в слоте onResult_net поставьте true.
Точно!!!
Как мне вЯ сейчас так пробую
передать
Ну просто интересно. Что вернет
Ну как вариант вместо singleShotFunc можно использовать лямбду и захватить QNetworkReply по указателю этой лямбдой
Ругается ошибка: 'reply_news' was not declared in this scope
qDebug() << reply_news->readAll() ;
^
QTimer::singleShot(5000, [=] {
и кстати
Сдаётся мне, что когда вы делаете обращение
ок. Проверю. В принципе обошелся вашим советом и искусственными задержками.
А все-таки - сколько на приложение нужно
networkManager = new QNetworkAccessManager(); ? Пишут что вроде бы один. С разными QNetworkReply* replay_cont.
Но у меня в этом случае чушь получается. Поэтому мне приходиться их штамповать на каждую форму (или уникальную ссылку для получения данных с сервера) Как правильно?
Тут скорее всего ситуативно, но по факту да, в большинстве задач можно обойтись и одним network менеджером