Как синхронизировать таймеры двух программ

Я делаю заявление, где у меня есть клиент и сервер. Клиент отправит некоторые координаты на сервер, который будет использовать их для перемещения робота. То, что я хочу, — это синхронизировать таймеры, используемые для данных журнала отметок времени, чтобы я мог сравнить входные и выходные данные. Связь осуществляется через TCP / IP, а клиент — на C ++, а сервер — на RAPID (язык программирования ABB). Моя проблема в том, что таймеры не синхронизированы должным образом.

Прямо сейчас таймеры запускаются, когда установлено соединение между ними:

Сторона сервера:
ListenForConnection;
StartTimer;

Сторона клиента:
connectToServer;
StartTimer;

Это не работает. Существует ли метод, обеспечивающий синхронизацию таймеров?

Примечание: сервер может быть подключен только через локальную сеть.

0

Решение

Вам нужен протокол между клиентом и сервером, чтобы передать отметку времени.

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

Самый простой, если у вас есть возможность двусторонней связи. В этом случае клиент делает

  1. Подключиться к серверу
  2. Продолжайте спрашивать, пока сервер там
  3. Сервер говорит: «Да, я здесь, время 1:00»
  4. Клиент начинает отправлять координаты

Если у сервера нет способа отправить клиенту, клиенту необходимо время от времени отправлять временную метку, которую сервер распознает как время, а не как координату. Два не будут синхронизированы, пока это не произойдет в первый раз.

1

Другие решения