C # локальная сеть обнаружение собственных агентов - PullRequest
0 голосов
/ 13 июня 2018

У меня есть этот программный продукт, назовем его агентом, развернутым на каждой машине в локальной сети.Время от времени, он должен получить обновление с сервера.Это означает, что каждая машина в этой сети подключается к моему серверу и загружает новую версию размером несколько МБ.

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

Идеи, которые у меня есть на данный момент:

  1. Использование общей папки в сети, первая машина, которая получает обновление, помещает ее в эту общую папку.Каждая машина проверяет общую папку, прежде чем перейти на мой сервер.Это работает, но у меня возникают проблемы, если совместное использование не включено в окнах, брандмауэрах, правах доступа и т. Д.

  2. Каждый агент открывает сокет, доступный для внутренней сети (возможно, открыть сокет tcpна случайном порте 127.0.0.1, о котором знают все агенты).Перед извлечением обновления отправьте сообщение в сеть, в которой вы запрашиваете обновление, и, если никто не отвечает, что у него есть обновление, перейдите на сервер.Иначе, получите обновление от агента, который ответил, так как они, вероятно, уже получили обновление от сервера или от некоторых других агентов.Проблемы, с которыми я здесь сталкиваюсь, состоят в том, что я действительно не знаю, как продолжить обнаружение сети, и какое влияние это может оказать на производительность.

  3. Создайте приложение локального сервера, опубликуйте его накакой-то узел внутренней сети (один из компьютеров), к которому все остальные агенты подключаются для обновления.Этот локальный сервер получает обновление только в первый раз и «кэширует» его, передавая его любому агенту, запрашивающему его.Это мой наименее любимый вариант, поскольку он подразумевает локальный сервер.Если этот сбой, другой узел не может получить обновления.Конечно, я могу реализовать механизм возврата к реальному серверу, но все же.Кроме того, каждый агент должен точно знать, кто такой «хозяин», и с этим будет еще сложнее справиться.

Если у вас, ребята, есть какие-нибудь лучшие идеи или какие-либо рекомендации поприведет меня, будет очень признателен.

Спасибо.

1 Ответ

0 голосов
/ 13 июня 2018

По существу, вы

  • должны либо вести список компьютеров, на которых уже установлено обновление, и выбирать один случайным образом для получения обновления,
  • , либо иметь широковещательный запрос, который всеКомпьютер с обновлением ответит и выберет один.

Я бы пошел с трансляцией в духе peer-to-peer.

...