2010-06-04 237 views
7

我正在开发一个嵌入式网络服务器的控制设备。网络服务器提供一个控制界面给任何请求它的网络浏览器(从Windows浏览器,Mac浏览器,iPhone机器人等)。Zeroconf名称解析

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

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

我目前的实现使用netbios协议。所以从Windows浏览器我可以输入//控制器/它可以工作,但这不适用于Mac或智能手机。除此之外,我还可以尝试实施苹果mDnsresponder,它可以让苹果机和iPhone手机玩得开心(尽管我认为那时我仅限于//controller.local/)。也许类似的东西存在Android,Symbian等,但是没有更通用的解决方案来创建一个我可以尝试的网络名称吗?

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

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

亲切的问候,

鲍勃

+1

相关问题:http://stackoverflow.com/questions/2375681 – 2010-06-04 09:19:10

回答

1

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

1

对于Windows用户能够“自动地”发现使用零配置您的设备,他们将需要:

  1. 已安装的mDNS守护进程(如mDNSResponder你提到的,这可从苹果免费)
  2. 已经安装了的软件,知道如何发出查询到的mDNS守护进程,并在本地网络上显示可用的服务(即设备的嵌入式Web服务器)

适用于Windows的Bonjour附带了适用于项目#2的Internet Explorer插件,可能对您的用户来说不是太“技术”。 (他们只需要下载并安装Bonjour for Windows并勾选该框来安装Internet Explorer插件。)Mac用户可以使用Safari浏览器,该浏览器已经具备Zeroconf意识。

拼图的最后一块 - 也是最棘手的部分---是您将不得不修改自己的软件,以使用“本地mDNS守护程序”注册您的控制器。然而,大概没有这样的事情,因为你的“控制设备”是一个嵌入式系统。所以你需要编写你自己的骨架mDNS守护进程。这不是很难做到,你可以使用苹果的代码mDNSPosix作为起点。但是,根据您的硬件限制,这可能不可行。总之,Zeroconf可能是一个棘手的协议堆栈。 '零配置'方面仅适用于用户的体验。对于开发者,它呈现出相当陡峭的学习曲线。如果您的用户通常只有一个单一设备的实例正在运行,则可能会过度。