Zeroconf 名称解析

Posted

技术标签:

【中文标题】Zeroconf 名称解析【英文标题】:Zeroconf Name resolution 【发布时间】:2011-02-27 16:27:21 【问题描述】:

我正在开发一个带有嵌入式网络服务器的控制设备。网络服务器为任何请求它的网络浏览器(从 Windows 浏览器、Mac 浏览器、iPhone android 等)提供控制接口。

我遇到的问题是一般地知道如何访问设备的一般方式。即在网络浏览器中输入什么地址。

对于我的用户来说,固定 IP 技术太高,而且可能会出错,因为我的设备可以插入许多不同的本地网络。使用 uPnp 服务发现需要在某些平台的客户端上运行软件,并且不像只输入网址那么自然。我想实现名称解析。

我当前的实现使用 netbios 协议。因此,在 Windows 浏览器中,我可以输入 //controller/ 并且它可以工作,但这不适用于 Mac 或智能手机。我还可以尝试实现 Apple 的 mDnsresponder,它应该让 Mac 和 iPhone 玩得开心(尽管我认为我仅限于 //controller.local/)。 Android、Symbian 等可能也存在类似的情况,但没有更通用的解决方案来创建一个我可以尝试的网络名称吗?

该平台目前基于 TI Cortex M3 处理器和 lwIP。

非常感谢任何有关如何找到解决方案的帮助或建议。

亲切的问候,

鲍勃

【问题讨论】:

相关问题:***.com/questions/2375681 【参考方案1】:

我认为您可以使用 DynDns (www.dyndns.org),您可以免费使用它。即使您无法获得固定的 IP 地址,您也可以使用它。在这种情况下,您将使用 dyndns 更新程序实用程序。你可以例如注册 ourCompanyName.dyndns.org,它将始终路由到您的本地计算机。

【讨论】:

【参考方案2】:

为了让 Windows 用户能够使用 Zeroconf“自动”找到您的设备,他们需要:

    已安装 mDNS 守护程序(如您提到的 mDNSResponder,可从 Apple 免费获得) 安装第二个软件,该软件知道如何向 mDNS 守护程序发出查询并显示本地网络(即您设备的嵌入式 Web 服务器)上的可用服务

Bonjour for Windows 捆绑了一个 Internet Explorer 插件,该插件足以满足第 2 项的需求,并且对于您的用户来说可能不是“太技术化”。 (他们只需要下载并安装 Windows 版 Bonjour 并勾选安装 Internet Explorer 插件的复选框。)Mac 用户可以使用 Safari 浏览器,它已经支持 Zeroconf。

难题的最后一部分——也是最棘手的部分——是您必须修改自己的软件才能将控制器注册到“本地 mDNS 守护程序”。然而,没有这样的事情,大概是因为你的“控制设备”是一个嵌入式系统。因此,您需要编写自己的基本 mDNS 守护程序。 做起来并不难,您可以使用 Apple 的 mDNSPosix 代码作为起点。但是,根据您的硬件限制,这可能不可行。

总而言之,Zeroconf 可能是一个棘手的协议堆栈。 “零配置”方面仅适用于用户体验。对于开发人员,它呈现出相当陡峭的学习曲线。如果您的用户通常只有一个单个您的设备实例在运行,那么这可能是矫枉过正。

【讨论】:

以上是关于Zeroconf 名称解析的主要内容,如果未能解决你的问题,请参考以下文章

lwIP 支持 Zeroconf 吗?

lwIP是否支持Zeroconf?

[转帖]ZEROCONF是什么

如何使用 Mono.Zeroconf 制作 AirPlay 接收器

嵌入式 linux 系统上的 zeroconf 实现

Linux 上 Java 和 Zeroconf (avahi) 的多播问题