У меня клиентские и серверные приложения на 2 разных серверах в интрасети. Как я могу измерить время, необходимое для отправки сообщения с сервера на клиент? (Я не могу зависеть от временных отметок машины, поскольку они могут быть выключены)
Пингуйте сервер с клиента, разделите время на два.Это довольно хорошая, хотя и немного оптимистичная оценка практической задержки.(Ping использует протокол ICMP; вы получите различные измерения с приложением TCP, поскольку TCP должен сначала установить соединение .)
Если вы хотите сделать это в приложении C ++Лучшим вариантом может быть вызов команды ping и анализ ее выходных данных.Особеннов Unix, где вам обычно требуются права root для отправки ICMP-пакетов.
ping
root
Если у вас есть доступ к точному источнику времени на каждой машине, вы можете либо использовать его непосредственно для отметок времени, либо использовать его для вычисления разницы между часами машин. Какой точный источник времени? GPS. Вот первая ссылка на продукт, который поставляет Google: (ссылка) .
Вы можете использовать ping, чтобы получить приблизительный показатель времени прохождения пакета от клиента к серверу и обратно.
Если вы не можете полагаться на синхронизированные часы, единственный способ - отправлять сообщения туда и обратно, как это делает пинг. Если вы хотите знать, сколько времени занимает только поездка туда (или обратно), вы можете разделить на два.