Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

Кто решал проблему разницы во времени между двумя компьютерами?   Найти похожие ветки 

 
Aleksandr ©   (2004-04-08 11:54) [0]

Программы на двух компьютерах связываются через сокеты. При этом в принимающей программе надо вычислить разницу в системном времени между ними. Тем, чтобы засечь время на первом и послать его второму, задачу не решить - пока передается пакет с информацией о системном времени, может пройти несколько миллисекунд. Скорее всего, при засекании времени на обоих на момент соединения будет то же самое. Есть еще какие-нибудь варианты?


 
Anatoly Podgoretsky ©   (2004-04-08 12:24) [1]

ntp раз в секунду


 
Verg ©   (2004-04-08 12:44) [2]


> Тем, чтобы засечь время на первом и послать его второму,
> задачу не решить - пока передается пакет с информацией о
> системном времени, может пройти несколько миллисекунд.


Вот и вопрос - с какой точностью?
Обычно это выясняется несколькими (например 10-20) запросами о времени подряд. При этом засекается реальное время между отправкой запроса и приемом ответа на каждый запрос. Минимальное и максимальное время ответа (почти RTT) отбрасываются. Остальные усредняются. Деленная пополам - это будет коррекция системного времени "того" хоста, полученного в последний раз. Ну а дальше разница между локальным временем и этим минус коррекция - будет разница во времени.
Если я правильно понял вопрос, то я бы так сделал.


 
panov ©   (2004-04-08 12:56) [3]

1. Посылается запрос на второй компьютер со своим временем.
2. Второй компьютер отслыает обратно свое время.
3. Отсюда вычисляется разница.

Для локальной сети 99% успешного определения разницы.
Для интернет хуже, но тоже достаточно точно, если взять усредненное между запросами. (Verg ©   (08.04.04 12:44) [2])


 
Aleksandr ©   (2004-04-08 14:03) [4]

2 Anatoly Podgoretsky : ntp - это что?

2 Verg : Наверное, это оптимально. А какая точность, не пробовали?

2 panov : К сожалению, основная проблема именно в том, чтобы разницу выяснить с точностью в +-2. Именно с такой погрешностью программы сверяют синхронность своих файлов (FileAge при конвертации с TDateTime "гуляет" на +2/-1, поэтому это допустимый диапазон). Большая разница приводит к запросу одной программы данных с другой, и если дельта времени была высчитана с погрешностью, в сети начинается бесконечный процесс пуляния данных друг другу - потому что время в них каждая программа ставит свое.


 
Sha ©   (2004-04-08 14:17) [5]

>Aleksandr ©   (08.04.04 14:03) [4]
А кто мешает самому ставить дату создаваемых файлов с нужной точностью, например +-минута?


 
Aleksandr ©   (2004-04-08 14:20) [6]

2 Sha : Как Вы себе это представляете?
DataList.Insert(DateTimeToFileDate(Now)+2-1)? К сожалению, такого в Делфи не сделаешь.  :)


 
Sha ©   (2004-04-08 14:36) [7]

Это почему же?
Кстати, еще лучше сравнивать с заданной точностью, не требуя полного совпадения.


 
Aleksandr ©   (2004-04-08 14:58) [8]

2 Sha: Увы, данные меняются с гораздо большей частотой. На одну секунду времени может приходиться 3-4 данных, и все они вставляются в коллекцию, сортируясь по времени. И только потому, что их время обработки юзает ту же погрешность в +-2, она допускается


 
Sha ©   (2004-04-08 15:03) [9]

Тогда надо навесить бирки на результаты и сравнивать не время создания, а бирки.


 
Anatoly Podgoretsky ©   (2004-04-08 15:07) [10]

И все они имеют инкриментный характер, тогда вообще не надо знать время ни одного из компьютеров.



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.038 c
14-1083946474
windows
2004-05-07 20:14
2004.05.30
как вообще программированием интересно заниматься?


14-1084300671
Vasya.ru
2004-05-11 22:37
2004.05.30
где взять 6ти знак?


7-1082490727
Fobos
2004-04-20 23:52
2004.05.30
Программное обеспечение для мобилок


7-1082543883
freeman82
2004-04-21 14:38
2004.05.30
вызов функции в потоке


4-1082442370
Stas
2004-04-20 10:26
2004.05.30
Чем заменить ShFileOperation