![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2009
Сообщений: 2
|
Добрый день.
Хотел узнать, может быть кто-то сталкивался с подобной погрешности измерения времени? Суть дела: у меня есть сервер написанные .net, ну и клиент на Flex (as3 SDK 3.4.1). Взаимодействия осуществляется на socket. Сейчас я испытываю локальную версию. Т.е. все строго на localhost. Каждая команда (кроме команды начала игры) содержит интервал времени с момента начала игры (на клиенте) до момента возникновения игрового события (которое и привело к возникновению команды) в миллисекундах. Действует это так: сервер посылает команду "игра началась". Клиент, получивший команду запоминает момент времени когда он получил команду: Потом клиент шлет команды, вычисляет интервал между этим временем и временем возникновения команды: Сервер тоже, делает такие же вычисления у себя (c#): startTime = DateTime.Now; long commandTime = (long) ((DateTime.Now - startTime).TotalMilliseconds); Была у меня теория, что дело в округлении: в C# превращая double в long я делаю фактически floor, в AS3 может быть делается математическое округление.. Но при худшем стечении обстоятельств разница бы составляла 2 мс. Однажды у меня разница составила 10 мс, что разбило эту теорию. Я понимаю, что между вычислением значения интервала и доставкой его на сервер множество кода, но, все трассируется, и я смотрю на величины в момент их вычисления, что исключается влияние ошибок передачи. Есть у меня и другая теория, что проблема на стороне framework'ов. Либо Flash, либо .net framework... Может кто-то сталкивался с подобным? |
![]() |
Часовой пояс GMT +4, время: 01:45. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| Date Time counting |
|
|