Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
1

Синхронизация клиента и сервера

10.07.2018, 15:44. Показов 1035. Ответов 5
Метки нет (Все метки)

1. Сервер генерирует число double. Например 3.25.
2. Сервер посылает клиенту сообщение о старте.
3. Как только клиент получает сообщение, он начинает на экране увеличивать число от 1.00 до бесконечности с шагом 0.01 и с задержкой 200мс, но она меняется при каждой итерации цикла, так как я добавил ускорение.
4. В определенный момент, сервер посылает сообщение остановиться.
5. Клиент, получив сообщение, останавливает счетчик.
Теперь проблема. В момент, когда клиент останавливается, у него на экране должно быть отображено число, которое изначально сгенерировал сервер.
Я придумал такую тему. Взять формулу с клиента, по которой рассчитывается задержка перед сменой числа, и по этой формуле изначально рассчитать сколько времени займет весь процесс на клиенте. Сделать таймаут на сервер на это время, а потом послать стоп.
Все бы хорошо, но то ли округление где-то, то ли задержка. В общем если сгенерировано 3.25, то на клиенте отобразится 3.26. Я добавил вывод таймеров и получил следующие значения...
Первое это через сколько сервер отправил сообщение остановиться, второе это сколько времени выполнялся цикл на клиенте.
Сервер : Клиент
42509 : 42088
7873 : 7942
19853 : 19801
39400 : 38943
24249 : 24167
4321 : 4442
1915 : 2077
2808 : 2954
4959 : 5070
43515 : 42943

Как все это синхронизировать можно?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2018, 15:44
Ответы с готовыми решениями:

Настройка клиента - сервера
Приветствую форумчане,помогите,пожалуйста,решить проблемку.. Имеется сервер: import...

Разработка клиента и сервера своего vpn на java
Добрый день. Уважаемые форумчани. Ищу людей, которые разрабатывали клиент и сервер простого vpn...

Как правильно разделить работу сервера и клиента
Доброго времени суток! Подскажите вот по какой теме. Хочу сделать простейшую сетевую игру. И...

Синхронизация службы и клиента через мьютекс
Доброго времени суток, форумчане! Кратко. Есть служба она создаёт мьютекс hMutex =...

5
Эксперт Java
3044 / 2541 / 782
Регистрация: 05.07.2013
Сообщений: 12,293
10.07.2018, 15:58 2
Цитата Сообщение от florgas Посмотреть сообщение
Например 3.25.
Цитата Сообщение от florgas Посмотреть сообщение
Сервер посылает клиенту сообщение
если число заранее известно, зачем мозг трахать?
0
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
10.07.2018, 16:07  [ТС] 3
Сам принцип приложения таков, что у клиента не должно быть конечного числа.
Число на ui должно расти до того момента, пока сервер не скажет стоп. А стоп он должен сказать когда у клиента окажется финальное число, сгенерированное на сервере.

Добавлено через 2 минуты
К сожалению при каждом изменении числа отправлять запрос на сервер с проверкой не превысило ли число сгенерированное тоже не вариант. Так как число меняется более 10 раз в секунду, а клиентов может быть 100-200-500 и более. 5.000 запросов в секунду как-то многовато.
0
2881 / 2293 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
10.07.2018, 16:14 4
пусть сервер вместе с командой "стоп" шлет и начальное число
0
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
10.07.2018, 16:21  [ТС] 5
Была такая мысль.
Но в итоге получится, что у клиента 3.26, ему приходит стоп, а потом вдруг число меняется на 3.25. Тоже не очень красиво получается.
Так же была мысль, что проблема в пинге. И хотел попробовать пинговать клиента, и перед отправкой "старт-стоп-сообщений" прибавлять-вычитать нужную задержку на сервере. И так для каждого клиента. Но по-моему это не поможет.
0
249 / 162 / 68
Регистрация: 10.12.2017
Сообщений: 558
11.07.2018, 23:28 6
можно на клиенте немного медленнее считать, в разумных пределах, а когда придет значение, просто его показать... да и тут в любом случае у всех интернет разный, и поэтому, что хочется никак не получится, хоть ты тресни)

вот реально занятная статья: http://fabiensanglard.net/quake3/network.php
из которой нужно понять, что нужно использовать udp, и что udp это не "Reliable transmission", и поэтому, если его использовать, то тогда нужно реализовывать reliable transmission. Более того, там есть разговор про пакеты из будущего... )

Добавлено через 1 минуту
Цитата Сообщение от florgas Посмотреть сообщение
прибавлять-вычитать нужную задержку на сервере
это тоже можно попробовать
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2018, 23:28

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

WS 2012, подозрительно медленная синхронизация dropbox клиента
Всем привет, работаю с WS 2012, нужно синхронизировать данные Dropbox аккаунта и потом индексацию...

Синхронизация клиента с сервером, без участия в обработке данных
Суть вопроса такова: есть сетевая игра, в которой все данные обрабатываются сервером, клиент...

Синхронизация приложения и сервера
Всем привет. Пишу сервер для своего андроид приложения и возникло 2 вопроса по поводу...

Синхронизация времени с NTP сервера
Подскажите,пожалуйста!Нужно получить время с сервера синхронизации времени ntp.mobatime.ru. Как это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.