Один из способов сделать это - через широковещательные пакеты UDP.См. Руководство Beej , если вы используете разъемы BSD.И здесь - это та же версия Microsoft.
Если все клиенты приложения находятся на одной стороне маршрутизатора, тогда широковещательный адрес 255.255.255.255
(или ff02::1
дляIPv6) должно быть более чем адекватным.
Многоадресная рассылка - это еще один вариант, но если это только для локальной сети, я не думаю, что это необходимо.
Предложение
Выберите номер порта UDP (скажем, дляради примера выберем 1667).Клиент должен прослушивать UDP-сообщения на 255.255.255.255:1667
(или на другом эквиваленте. Например: IPEndPoint(IPAddress.Any, 1667)
).Сервер должен транслировать сообщения по тому же адресу.
Предложение формата
Пакет UDP: первые четыре байта в качестве магического числа, следующие четыре байта - адрес IPv4 (и вы можете захотеть добавить другие вещикак имя сервера).
Магическое число на случай, если произойдет столкновение с другим приложением, использующим тот же порт.Проверьте длину пакета и магическое число.
Сервер будет транслировать пакет с интервалом примерно в 30 секунд.(В качестве альтернативы сервер может отправлять ответ только тогда, когда клиент отправляет запрос через широковещательную рассылку.)