Ответ 1
Нет, Microsoft напрямую не поддерживает Multicast-DNS.
Однако существует несколько сторонних альтернатив:
Есть ли у Windows (какой-то современный вкус) сервер mDNS и/или работает по умолчанию? Если да, то как сказать, желательно динамически, начать/прекратить рекламу новой услуги?
Если стандартного нет, то как решить проблему конфликтов, пытающихся запустить несколько серверов mDNS в этой среде?
В принципе, я хочу реализовать службу, которая будет работать в Linux, Windows и Mac OS X и которая должна рекламировать местоположение веб-сервера zeroconf с использованием mDNS. В Linux я просто использую avahi-publish (или устанавливаю файл конфигурации). Я предполагаю, что ответ будет прост для OS X. Я изо всех сил пытаюсь найти информацию для Windows.
Нет, Microsoft напрямую не поддерживает Multicast-DNS.
Однако существует несколько сторонних альтернатив:
Начиная с Windows 10, Microsoft, похоже, делает шаги к нативной реализации Windows mDNS и dns-sd.
Их первая итерация привела к затоплению сети mDNS:
Windows 10 в конфигурации по умолчанию будет спамить в локальных сетях отвечая на все запросы mDNS пустыми ответными пакетами.
И в продолжение:
Эта проблема была исправлена в Windows 10 1511 (10586) и более поздних версиях
В последних сборках произошли улучшения повсеместно, и теперь Windows предлагает библиотеку обнаружения службы dns-sd, которая в настоящее время ограничена приложениями UWP.
В прошлый раз, когда я нуждался в нем, Apple Bonjour Print Services для Windows был самым удобным клиентом mDNS для Windows, который я мог найти. Только 5 МБ.
Также успешно использовали C++/WinRT для открытия dnssd прямо из C++. С нашей точки зрения, он быстрее и надежнее запрашивает службы и позволит вам легко установить наблюдатель для получения уведомлений о прибытии устройств и т.д. Конечно, это ограничено версиями Windows 10 с поддержкой C++/WinRT, которая начинается с 10.0.17134.0 (Windows 10, версия 1803).
Одно предостережение: мы заметили, что он не предоставляет и не распознает FQDN (конечная точка). Таким образом, для устройства, которое Bonjour ИЛИ Avahi даст адрес mydevice.local.
, Windows вместо этого дает mydevice.local
. Попытка пропинговать mydevice.local.
под Windows 10 (1809) не удалась.
Windows 10 изначально поддерживает mDNS/Zeroconf, но только для современных API, а не для приложений Win32. Если у вас есть такое приложение, требуется сторонний сервис.
Короткий ответ заключается в поддержке как Avahi, так и Bonjour. Вам понадобится поддержка Bonjour для работы на OSX в любом случае, и если пользователь Windows установит iTunes, они уже будут запускать его.
В качестве резервной копии для пользователей Windows, не работающих с iTunes, вы можете скомпилировать Avahi как библиотеку для Windows (с небольшими усилиями) и расслоить ее. Это нетривиальный бит упаковки, но альтернатива требует от ваших пользователей Windows установки iTunes для использования вашего приложения.