Werawoolf
@Werawoolf
Frontend Engineer

Как реализовать синхронизацию самовыделения сервера в одноранговой сети клиент-серверного приложения С#?

Имеется локальная сеть. При появлении клиента в ней, он должен проверить имеется ли сервер, с которым он может соединится, если да то он это делает и ожидает команд от сервера. Иначе он сам должен стать сервером и ждать клиентов на подключение. Было придумано, что сначала все клиенты попадают в мультикаст группу и ждут рандомное время ответа от сервера. Если же его нет, то обрывают и сами начинают посылать сообщения сервера. Проблема в том, что если время ожидания для двух клиентов примерно совпадет получиться два сервера, которые будут слать сообщения клиентам. Как произвести синхронизацию выделения сервера?
  • Вопрос задан
  • 2694 просмотра
Пригласить эксперта
Ответы на вопрос 2
foxmuldercp
@foxmuldercp
Системный администратор, программист, фотограф
эм. я бы наверное слушал какой-то широковещательный адрес, например, и при запуске отправлял бы по нему какой-то запрос. в случае если в допустим 5 секунд ответа не пришло, становился бы мастером. Если ответ пришел - значит я не первыйи становился бы клиентом.
почитайте, как реальзован wins сервер в одноименном протоколе Microsoft.
Ответ написан
Комментировать
enkryptor
@enkryptor
software developer (TS/JS, C#), Agile enthusiast
Можно добавить промежуточную фазу перед назначением сервера, в которой клиент будет запрашивать сеть на аналогичные "кандидаты в сервера", и, в случае их наличия, перезапускать выборы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы