我正在开发一个带有嵌入式网络服务器的控制设备。 Web服务器为任何请求它的Web浏览器提供控制接口(从Windows浏览器,Mac浏览器,iPhone android等)。
我遇到的问题是通常知道如何访问设备的一般方法。即在网络浏览器中键入的地址。
固定IP对我的用户来说太技术了,可能会出错,因为我的设备可以插入许多不同的本地网络。使用uPnp服务发现需要在某些平台上在客户端上运行软件,并不像只键入Web地址那样自然。我想实现名称解析。
我当前的实现使用netbios协议。所以从Windows浏览器我可以键入// controller /它可以工作,但这不适用于Mac或智能手机。我还可以尝试实现苹果mDnsresponder,它应该让Mac和iPhone玩得开心(虽然我认为我只限于//controller.local/)。也许类似的东西也存在于Android,Symbian等,但是没有更普遍的解决方案来创建我可以尝试的网络名称吗?
该平台目前基于TI Cortex M3处理器和lwIP。
非常感谢有关如何找到解决方案的任何帮助或建议。
亲切的问候,
鲍勃
答案 0 :(得分:1)
我认为您可以使用DynDns(www.dyndns.org),它可以免费用于您要做的事情。即使您无法获得固定的IP地址,也可以使用它。在这种情况下,您将使用dyndns updater实用程序。你可以,例如注册ourCompanyName.dyndns.org,它将始终路由到您的本地计算机。
答案 1 :(得分:1)
为了让Windows用户能够使用Zeroconf“自动”找到您的设备,他们需要:
Bonjour for Windows捆绑了一个适用于第2项的Internet Explorer插件,对于您的用户来说可能不是“太技术”。 (他们只需要下载并安装适用于Windows的Bonjour并打勾即可安装Internet Explorer插件。)Mac用户可以使用已经支持Zeroconf的Safari浏览器。
最后一块拼图---最棘手的部分是你必须修改自己的软件,用“本地mDNS守护进程”注册你的控制器。但是,大概没有这样的事情,因为你的“控制设备”是一个嵌入式系统。所以你需要编写自己的骨架mDNS守护进程。这不是 很难做到的,你可以使用Apple的mDNSPosix代码作为起点。但是,根据您的硬件限制,这可能不可行。
总而言之,Zeroconf可能是一个棘手的协议栈。 “零配置”方面仅适用于用户体验。对于开发人员,它呈现出相当陡峭的学习曲线。如果您的用户通常只有设备的单个实例正在运行,则可能会出现问题。