Russian Qt Forum
Августа 26, 2025, 03:31
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
QTcpSocket/QTcpServer узнать время коннекта в миллисекундах
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QTcpSocket/QTcpServer узнать время коннекта в миллисекундах (Прочитано 4605 раз)
merke
Гость
QTcpSocket/QTcpServer узнать время коннекта в миллисекундах
«
:
Октября 29, 2010, 15:47 »
Доброго времени суток!
У меня стоит задача узнать время коннекта клиента к серверу в миллисекундах. Может есть стандартное решение этой задачи? Или просто засечь время нажатия на кнопку "Соединиться" на клиенте и при соединении на стороне сервера также в лог вывести время соединения и путем простой арифметики высчитать время соединения?
Рационально ли данное решение?
И ещё хочу спросить! Пишется клиент-серверное приложение. Есть две реализации:
1. Клиент коннектится к серверу и висит на нем(получает отправляет команды/файлы) до физического дисконекта т.е. отключился сервер либо нажата кнопочка на клиенте "Отключиться". Соединений может быть порядком 20 не больше.
2. Вторая реализация заключается в том что когда клиенту нужно что то передать на сервер он коннектится к нему передает нужную информацию и отключается. Также сервер, у него хранится реестр всех клиентов их IP адреса и порты, когда ему нужно что либо передать на клиент/клиенты он коннектится к клиенту передает данные и отключается. Т.е. на сервере стоит серверный сокет и на клиенте стоит серверный сокет. Получается нет постоянно висящих соединений.
Теперь вопрос: Какая из этих реализаций рациональна в плане нагрузки на сервер? Или когда имеются постоянно соединенные клиенты к серверу, или коннект инициируется только тогда когда нужно передать данные? когда передача завершится происходит дисконнект. Инициатором соединения в этом случае может быть как клиенты так и сервер.
Сервер будет стоять на Ubuntu.
Жду предложений!
С уважением, Александр
«
Последнее редактирование: Октября 29, 2010, 16:10 от Александр
»
Записан
RedDog
Гость
Re: QTcpSocket/QTcpServer узнать время коннекта в миллисекундах
«
Ответ #1 :
Октября 29, 2010, 15:59 »
Ловить QAbstractSocket::stateChanged
при QAbstractSocket::ConnectingState - запускать таймер
при QAbstractSocket::ConnectedState - останавливать
Записан
merke
Гость
Re: QTcpSocket/QTcpServer узнать время коннекта в миллисекундах
«
Ответ #2 :
Октября 29, 2010, 16:49 »
Запускать таймер - это я так понимаю брать текущее время например
Код:
QTime::currentTime().msec();
Останавливать брать значения текущего же времени!
И потом высчитывать разницу?
Или взводить таймер с интервалом в 1 миллисекунду и инкрементировать какую то переменную на одну единицу в миллисекунду?
«
Последнее редактирование: Октября 29, 2010, 16:58 от Александр
»
Записан
RedDog
Гость
Re: QTcpSocket/QTcpServer узнать время коннекта в миллисекундах
«
Ответ #3 :
Октября 29, 2010, 22:55 »
Под виндой есть
Код:
DWOR GetTickCount()
под остальными ОС затрудняюсь ответить.
Есть еще QTimer::start/stop
Записан
aarlan
Гость
Re: QTcpSocket/QTcpServer узнать время коннекта в миллисекундах
«
Ответ #4 :
Ноября 02, 2010, 00:30 »
если правильно понял, то в центре системы сервер, у которого список возможных клиентов.
давай теперь прикинем: если каждый раз по необходимости создавать коннект, что-то передавать-принимать, то разница по сравнению с постоянными соединениями, только в том, что создаются объекты: сокеты, возможно твои классы. это мелочь, учитывая, что клиентов у тебя 20. при постоянном подключении по сути никакой нагрузки на сервер нет.
разницу, может, можно заметить при стресс-тестировании, что-нить вроде клиенты подключаются на время порядка миллисекунды, что-то делают, отключаются, процесс повторяется.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...