Название: QTcpSocket/QTcpServer узнать время коннекта в миллисекундах Отправлено: merke от Октябрь 29, 2010, 15:47 Доброго времени суток!
У меня стоит задача узнать время коннекта клиента к серверу в миллисекундах. Может есть стандартное решение этой задачи? Или просто засечь время нажатия на кнопку "Соединиться" на клиенте и при соединении на стороне сервера также в лог вывести время соединения и путем простой арифметики высчитать время соединения? Рационально ли данное решение? И ещё хочу спросить! Пишется клиент-серверное приложение. Есть две реализации: 1. Клиент коннектится к серверу и висит на нем(получает отправляет команды/файлы) до физического дисконекта т.е. отключился сервер либо нажата кнопочка на клиенте "Отключиться". Соединений может быть порядком 20 не больше. 2. Вторая реализация заключается в том что когда клиенту нужно что то передать на сервер он коннектится к нему передает нужную информацию и отключается. Также сервер, у него хранится реестр всех клиентов их IP адреса и порты, когда ему нужно что либо передать на клиент/клиенты он коннектится к клиенту передает данные и отключается. Т.е. на сервере стоит серверный сокет и на клиенте стоит серверный сокет. Получается нет постоянно висящих соединений. Теперь вопрос: Какая из этих реализаций рациональна в плане нагрузки на сервер? Или когда имеются постоянно соединенные клиенты к серверу, или коннект инициируется только тогда когда нужно передать данные? когда передача завершится происходит дисконнект. Инициатором соединения в этом случае может быть как клиенты так и сервер. Сервер будет стоять на Ubuntu. Жду предложений! С уважением, Александр Название: Re: QTcpSocket/QTcpServer узнать время коннекта в миллисекундах Отправлено: RedDog от Октябрь 29, 2010, 15:59 Ловить QAbstractSocket::stateChanged
при QAbstractSocket::ConnectingState - запускать таймер при QAbstractSocket::ConnectedState - останавливать Название: Re: QTcpSocket/QTcpServer узнать время коннекта в миллисекундах Отправлено: merke от Октябрь 29, 2010, 16:49 Запускать таймер - это я так понимаю брать текущее время например
Код: QTime::currentTime().msec(); И потом высчитывать разницу? Или взводить таймер с интервалом в 1 миллисекунду и инкрементировать какую то переменную на одну единицу в миллисекунду? Название: Re: QTcpSocket/QTcpServer узнать время коннекта в миллисекундах Отправлено: RedDog от Октябрь 29, 2010, 22:55 Под виндой есть
Код: DWOR GetTickCount() Есть еще QTimer::start/stop Название: Re: QTcpSocket/QTcpServer узнать время коннекта в миллисекундах Отправлено: aarlan от Ноябрь 02, 2010, 00:30 если правильно понял, то в центре системы сервер, у которого список возможных клиентов.
давай теперь прикинем: если каждый раз по необходимости создавать коннект, что-то передавать-принимать, то разница по сравнению с постоянными соединениями, только в том, что создаются объекты: сокеты, возможно твои классы. это мелочь, учитывая, что клиентов у тебя 20. при постоянном подключении по сути никакой нагрузки на сервер нет. разницу, может, можно заметить при стресс-тестировании, что-нить вроде клиенты подключаются на время порядка миллисекунды, что-то делают, отключаются, процесс повторяется. |