#windows #c_sharp #net
Есть сервер, и клиенты двух типов: управляющая прога(user) из которой пользователь отправляет команды и программы(client) которые собственно эти команды выполняют. Решение должно гарантировать получение и выполнение команд client-ами. Чаще всего (практически всегда) каждый client стоит на отдельной машине. Все участники соединены в локальной сети, возможно что локальная сеть сделана специально под эти цели и лишних клиентов в ней нет. пользователь через user отправляет команду, ее принимает сервер и перенаправляет client-ам. Вот задача в том чтобы клиенты выполнили команду максимально синхронно во времени(максимальная допустимая разсинхронизация 40мс). Требования к минимизации времени через которое client-ы получат команду от user-а практически отсутствуют(1, 2, 3 секунды вполне допустимо) И еще, машины на которых стоят client-ы максимально сопоставимы по характеристикам (чаще всего это одинаковые ноутбуки выделенные для выполнения только этих команд) Язык разработки C#. Пока реализовал все выше перечисленное на основе System.Net.Sockets, все работает, но в 20% из 100% превышается максимально допустимый разсинхрон. Думал научить сервер слать свое время по UDP client-ы постоянно будут синхронизировать с этим временем свои таймеры и сервер при отправки команды будет сообщать и время в которое необходимо эти команды выполнить, но вот нет совсем доверия к широковещательным рассылкам. У кого какие мысли как это можно организовать? За ранее спасибо за ответы.
Ответы
Ответ 1
Пробовали использовать SignalR(я знаю что он на основе сокетов, но может он лучши использует их)? Он вроде постоянно держит открытым сокет, соотетственно поступают данные, идет оверхед по времени на обработку кода и отсылку по сети.
Комментариев нет:
Отправить комментарий