2010-11-29 3 views
2

У меня есть два компьютера, подключенные по локальной сети. Когда пользователь меняет время (через мое приложение) на одном, мне бы хотелось, чтобы время на втором тоже было обновлено (или вторая машина могла опросить первую). Нет ни сервера, ни Интернета. Каков наилучший способ сделать это?Синхронизация времени между двумя ПК через TCP/IP, без сервера

ОС: XP встроен.
Рамка: .Net 3.5

ответ

1

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

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

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

+0

Симон: Ну, чтобы оценить потери времени вы могли бы сделать пинг. (Средний пинг на двух компьютерах, подключенных к локальной сети, хотя и довольно маргинальный.) – Patrick 2010-11-29 14:20:29

1

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

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

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

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

+0

Спасибо, я дам им и попытку – Benjol 2010-11-29 14:53:00

0

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

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

Смежные вопросы