25

Windows(一些现代风格)是否默认安装和/或运行 mDNS 服务器?如果是这样,那么如何告诉它(最好是动态地)开始/停止广告一项新服务?

如果没有标准,那么如何处理尝试在该环境中运行多个 mDNS 服务器的冲突问题?

基本上,我想实现一个可以在 Linux、Windows 和 Mac OS X 上运行的服务,并且需要使用 mDNS 来通告其 zeroconf 网络服务器的位置。在 Linux 上,我只使用 avahi-publish(或安装配置文件)。我猜答案对于 OS X 来说是直截了当的。我正在努力寻找适用于 Windows 的信息。

4

6 回答 6

38

从 Windows 10 开始,Microsoft 朝着 mDNS 和 DNS-SD 的原生 Windows 实现迈出了一大步。

虽然早期的迭代仅限于 UWP 应用,但至少从 SDK 版本 10.0.18362.0(1903/19H1,2019 年 5 月)公开了通用 Win32 API 。

注意:目前已确认此实现仅适用于 64 位构建目标,存在一个阻止编译 32 位目标的未解决问题。

此答案先前版本的过时说明:

早期迭代导致mDNS 网络泛滥

Windows 10 在其默认配置中,将通过使用空响应数据包响应所有 mDNS 请求来向其本地网络发送垃圾邮件。

此问题已在 Windows 10 1511 (10586) 及更高版本中修复

于 2016-12-07T14:04:22.073 回答
12

上次我需要一个时,Apple 的适用于 Windows 的 Bonjour 打印服务是我能找到的最方便的适用于 Windows 的 mDNS 客户端。只有 5MB。

于 2016-12-06T02:25:56.197 回答
5

现在还成功地使用 C++/WinRT 直接从 C++ 进行 dnssd 发现。从我们的角度来看,查询服务似乎更快、更可靠,并且可以让您轻松安装观察程序以在设备到达等时获取通知。当然,这仅限于支持 C++/WinRT 的 Windows 10 版本,它开始使用 10.0.17134.0(Windows 10 版本 1803)。

一个警告:我们注意到它不提供也不识别FQDN(尾随点)。因此,对于 Bonjour OR Avahi 会给出地址的设备mydevice.local.,Windows 会给出mydevice.local. 在 Windows 10 (1809) 下尝试 pingmydevice.local.失败。

于 2019-03-19T12:59:54.263 回答
3

Windows 10 原生支持 mDNS/Zeroconf,但仅适用于现代 API,不适用于 Win32 应用程序。如果您有这样的应用程序,则需要第三方服务。

资料来源:https ://social.technet.microsoft.com/Forums/en-US/8a0346de-2296-4f46-bc36-ff3fb13e283b/builtin-mdnsdnssd-zeroconf-support-in-windows-10

于 2019-08-18T09:52:59.287 回答
-3

简短的回答是同时支持 Avahi 和 Bonjour。无论如何,您都需要 Bonjour 支持才能在 OSX 上运行,如果 Windows 用户安装了 iTunes,他们将已经在运行它。

作为不运行 iTunes 的 Windows 用户的后备方案,您可以将 Avahi 编译为 Windows 的库(稍加努力)并捆绑它。这是一个重要的打包方式,但替代方法是要求您的 Windows 用户安装 iTunes 才能使用您的应用程序。

于 2015-06-06T22:42:16.530 回答