Как реализовать синхронизацию самовыделения сервера в одноранговой сети клиент-серверного приложения С#?
Имеется локальная сеть. При появлении клиента в ней, он должен проверить имеется ли сервер, с которым он может соединится, если да то он это делает и ожидает команд от сервера. Иначе он сам должен стать сервером и ждать клиентов на подключение. Было придумано, что сначала все клиенты попадают в мультикаст группу и ждут рандомное время ответа от сервера. Если же его нет, то обрывают и сами начинают посылать сообщения сервера. Проблема в том, что если время ожидания для двух клиентов примерно совпадет получиться два сервера, которые будут слать сообщения клиентам. Как произвести синхронизацию выделения сервера?
эм. я бы наверное слушал какой-то широковещательный адрес, например, и при запуске отправлял бы по нему какой-то запрос. в случае если в допустим 5 секунд ответа не пришло, становился бы мастером. Если ответ пришел - значит я не первыйи становился бы клиентом.
почитайте, как реальзован wins сервер в одноименном протоколе Microsoft.
Можно добавить промежуточную фазу перед назначением сервера, в которой клиент будет запрашивать сеть на аналогичные "кандидаты в сервера", и, в случае их наличия, перезапускать выборы.