Windows (une version moderne) a-t-il un serveur mDNS installé et/ou fonctionnant par défaut? Si oui, alors comment lui dire, de préférence de manière dynamique, de démarrer/arrêter la publicité d'un nouveau service?
S'il n'y a pas de norme, comment gérer le problème des conflits en essayant d'exécuter plusieurs serveurs mDNS dans cet environnement?
Fondamentalement, je veux implémenter un service qui fonctionnera sur Linux, Windows et Mac OS X et qui doit annoncer son emplacement de serveur Web zeroconf en utilisant mDNS. Sous Linux, j'utilise simplement avahi-publish (ou j'installe un fichier de configuration). Je suppose que la réponse sera simple pour OS X. J'ai du mal à trouver des informations pour Windows.
Non, Microsoft ne prend pas directement en charge la multidiffusion DNS.
Cependant, il semble y avoir plusieurs alternatives tierces:
À partir de Windows 10, Microsoft semble progresser vers une implémentation Windows native de mDNS et dns-sd.
Leur première itération a entraîné inondation du réseau mDNS :
Windows 10, dans sa configuration par défaut, spammera ses réseaux locaux en répondant à toutes les demandes mDNS avec des paquets de réponse nuls.
Et suivi:
Ce problème a été résolu dans Windows 10 1511 (10586) et supérieur
Les versions récentes ont vu des améliorations partout et Windows propose désormais une bibliothèque de découverte de service dns-sd qui est actuellement limitée aux applications UWP.
La dernière fois que j'en ai eu besoin, Apple Bonjour Print Services for Windows était le client mDNS le plus pratique pour Windows que j'ai pu trouver. Seulement 5 Mo.
Ont également utilisé avec succès C++/WinRT pour la découverte dnssd directement à partir de C++ maintenant. Il semble de notre point de vue être plus rapide et plus fiable pour interroger les services et vous permettra d'installer facilement un observateur pour recevoir des notifications lorsque les appareils arrivent, etc. Bien sûr, cela est limité aux versions de Windows 10 avec prise en charge de C++/WinRT, qui démarre avec 10.0.17134.0 (Windows 10, version 1803).
Une mise en garde: nous avons remarqué qu'il ne fournit pas, ni ne reconnaît, un FQDN (point de fin). Donc, pour un appareil que Bonjour OR Avahi donnerait une adresse de mydevice.local.
, Windows donne à la place mydevice.local
. Tentative de ping mydevice.local.
sous Windows 10 (1809) échoue.
Windows 10 prend en charge nativement mDNS/Zeroconf, mais uniquement pour les API modernes, pas pour les applications Win32. Si vous disposez d'une telle application, un service tiers est requis.