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 017. Customize the login page to Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Игорь МаксимовNov. 22, 2024, 11:51 a.m.
Evgenii LegotckoiOct. 31, 2024, 2:37 p.m.
Fb3 file reader on Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Django - Lesson 064. How to write a Python Markdown extension Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
Игорь МаксимовOct. 5, 2024, 7:51 a.m.
QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Now discuss on the forum
Mosquito Spray System Effective Mosquito Systems for Backyard | Eco-Friendly Misting Control Device & Repellent Spray - Moogo ; Upgrade your backyard with our mosquito-repellent device! Our misters conce…
Evgenii LegotckoiJune 24, 2024, 3:11 p.m.
t
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
tonypeachey1Nov. 15, 2024, 6:04 a.m.
NSProjectJune 4, 2022, 3:49 a.m.
IscanderCheOct. 31, 2024, 3:43 p.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 менеджером