Наиболее распространенный способ для этого - использовать обычный обычный DNS. Ваша компания, вероятно, имеет собственное доменное имя; возможно внутренний; просто добавьте поддомен под ним - myapp.internal.example.com
или myapp.corp
или что-то в этом роде - и укажите адрес вашего сервера.
myapp.<domain>. A 10.0.0.5
myapp.<domain>. AAAA 2001:db8::123:4
(В конце концов, это сервер, его IP-адрес вряд ли будет меняться еженедельно. И когда он все-таки изменится, все, что вам нужно обновить, это поддомен в DNS.)
Вы можете сделать его более продвинутым и использовать записи SRV вместо прямых записей адресов A/AAAA. Например, протокол чата XMPP использует записи SRV для определения местоположения серверов для домена, которые могут быть множественными с разными приоритетами:
chat1.<domain>. A 10.0.0.4
chat2.<domain>. A 10.0.0.7
; priority, weight, port, hostname
_xmpp._tcp.<domain>. SRV 0 0 5222 chat1.<domain>.
_xmpp._tcp.<domain>. SRV 10 0 5222 chat1.<domain>.
Это сложнее для приложений, поскольку теперь им нужна некоторая логика для сортировки возвращаемых записей по приоритету SRV, а затем по весу, но это может дать некоторые преимущества, такие как возможность добавления более медленных "резервных" серверов.
Если по какой-либо причине это неприемлемо, вы можете попробовать один из существующих протоколов обнаружения служб на основе многоадресной рассылки. (Некоторые из них объединяют разрешение имен и обнаружение служб в одно; другие разделяют его.)
Apple и различные дистрибутивы Linux используют Bonjour/Avahi aka mDNS ("Multicast DNS") в сочетании с DNS-SD для общего обнаружения служб и разрешения локальных имен;
Microsoft предпочитает SSDP на основе UPnP, за исключением случаев, когда вместо этого она предпочитает WS-Discovery. Он использовал NetBIOS в прошлом. Все они описаны в разделе « Поставщики функций».
(Некоторые программы решают просто транслировать дейтаграммы UDP, говоря:«Я здесь!"в своем собственном формате. Это не работает хорошо.)
Как правило, существуют как предоставляемые ОС API-интерфейсы, так и сторонние библиотеки для поиска определенных служб с использованием соответствующего протокола обнаружения.
Если вы собираетесь реализовать что-то самостоятельно, каждая ОС также предоставляет функции для присоединения к группе многоадресной рассылки и для получения сообщений, которые любой отправляет в эту группу. Многоадресная IP-рассылка должна работать по умолчанию в широковещательном домене, но часто ее необходимо настроить для прохождения маршрутизаторов.