Синхронизация времени между двумя ПК через TCP / IP, без сервера - PullRequest
2 голосов
/ 29 ноября 2010

У меня есть два компьютера, подключенных по локальной сети. Когда пользователь изменяет время (через мое приложение) на одном, я бы хотел, чтобы время на втором тоже обновлялось (или второй компьютер мог опросить первый). Там нет сервера, нет интернета. Какой лучший способ сделать это?

ОС: XP встроена.
Framework: .Net 3.5

Ответы [ 3 ]

1 голос
/ 29 ноября 2010

Низкотехнологичным решением может быть выполнение команды NET TIME \\[OtherPC] /SET на компьютере, который необходимо обновить.

Вы могли бы настроить аппарат на вызов этого через определенный интервал.

Обратите внимание, я пробовал это только на обычных компьютерах с Windows, но я думаю, что это будет работать и на встроенных.

Редактировать: Осматривая, кажется, что XP Embedded может поддерживать WMI, если он имеет и имеет класс Win32_OperatingSystem и это SetDateTime , ваше приложение может сделать этот вызов удаленный компьютер, и вы можете избежать необходимости вносить изменения.

1 голос
/ 29 ноября 2010

Если вы не можете использовать NTP-сервер, вы должны написать его самостоятельно.

  1. Оба приложения реализуют службу WCF и являются одним клиентом другого;
  2. Приложение с измененным местным временем уведомляет другое и отправляет DateTime;
  3. Приложение, которое получает обновленный DateTime, меняет местное время (но помните, что вашему приложению для этого потребуется более высокая привилегия, посколькусделать это с помощью неуправляемого кода);

Если вам не нужна большая точность, все готово.Если вам нужна большая точность, вам нужно оценить потерянное время между отправкой и прибытием данных, и оно не является тривиальным.

0 голосов
/ 29 ноября 2010

Можно ли назначить одну из машин NTP-сервером?и, следовательно, используйте стандартную систему NTP-сервера, чтобы вам не приходилось писать свою собственную.

Хотя я не знаком с XPe, эта ссылка Есть время? , кажется, имеет все необходимоесловечки

...