Zeroconf名称解析

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

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

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

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

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

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

亲切的问候,

短发

我想你可以使用DynDns(www.dyndns.org),它可以免费用于你想要做的事情。 即使您无法获得固定的IP地址,也可以使用它。 在这种情况下,您将使用dyndns updater实用程序。 您可以注册myCompanyName.dyndns.org,它将始终路由到您的本地计算机。

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

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

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

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

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