2015-09-10 2 views
0

Обзора системы: клиента на Ubuntuопроса на сервер, чтобы запросить информацию о server.Qt

SDK/Язык: QT/C++

Ограничения: Не удается получить доступ кода сервера.

Проблема:
Мне нужно опрашивать сервер от клиента на регулярные промежутки времени и ожидать ответа сервера назад с ответным сообщением. Ожидаемое сообщение - довольно длинная строка.

Описание:
Я уже реализован клиент Qt, что установить связь с не-квартами сервера. Программное обеспечение однопоточное как на клиенте, так и на сервере & работает должным образом. Это означает, что пользователь просит клиента отправить некоторую команду запроса на ответ сервера и сервера. Теперь с этим мне нужно регулярно опросить сервер, чтобы запросить его информацию о статусе. Я ищу предложение о том, как реализовать это. [Примечание: Я не ищу исходный код, но только немного Fo хинтов и инструменты или библиотеки для использования]

Есть несколько вариантов, которые я думал

1)Использования для цикла в коде с QTimer, который посылает status_request на сервер и сервер ответ обратно

***** DisAdv: *****
я), что произойдет, если пользователь и Новый цикл отправки запроса одновременно.?

ii) Возможно ли, что цикл будет потреблять все ресурсы?

2) Использовать другую тему для голосования? что вы, ребята, думаете об этом? С текущим требованием, по вашему мнению, введение новой темы - хорошая идея?

3) Любое другое лучшее и выполнимое решение?

+0

Вам действительно нужно понять, что такое цикл событий, и как писать асинхронный код. Забудьте о «ожидании» чего-либо. Вместо этого вы получаете уведомление и выполняете свои слоты, когда это происходит, например, завершение сетевого запроса или истечение таймера. –

ответ

0

Используйте цикл в коде с QTimer

Зачем вам нужен в for цикле QTimer? Используйте QTimer::singleShot.

Отправить запрос на сервер при запуске программы и выполнить QTimer::singleShot() каждый раз после ответа сервера. Это будет лучше, чем отправка запросов каждый N миллисекунд.

Не забывайте о сетевых ошибках.

Смежные вопросы