如何使用我自己的应用程序发现网络上的特定设备

时间:2017-02-02 09:31:55

标签: upnp service-discovery zeroconf mdns autodiscovery

我有一个gps跟踪设备的工作原型。当我想要修改其设置时,它当前需要外部屏幕。我希望以一种连接到本地WIFI的方式来改变它,并且可以发现用于与之交互的移动应用程序(就像亚马逊回声,菲利普斯色调,chromecast等设备的情况一样) 。)我很难找到有关如何执行此操作的信息。 很抱歉,这不是一个非常具体的编码问题,但我确信快速提示可以很容易地指出我正确的方法。

1 个答案:

答案 0 :(得分:1)

根据您的代码,您已经知道了几个选项。如果你没有提到任何约束(操作系统?编程语言?你的设备如何连接到本地网络?),除了“存在这些技术”之外,很难说更多......

如果您的设备能够以某种方式加入正确的网络,您可以使用几种相当简单的本地网络发现替代方案。无论您的平台如何,您都应该能够通过适度的集成工作找到适合您的库或服务:

  • SSDP(来自UPnP的设备/服务发现协议)
  • zeroconf(又名bonjour,avahi)
  • 基于webservice的“发现”:如果您已准备好运行设备和客户端可以连接到您的互联网服务,那么显然也可以通过这种方式进行发现:您的设备可能例如有一个打印的代码,客户需要输入,然后web服务可以在两者之间传递信息。

但是,如果您的设备在知道如何加入本地Wi-Fi网络之前需要被发现,那么您至少有两个选项,两者都难以实现:

  • Wi-Fi Direct可让您的设备在不连接网络的情况下被发现。它需要您的设备wifi硬件和操作系统,以及客户端设备的WiFi硬件和操作系统的支持。
  • 只要没有看到已知的wifi网络,就可以让您的设备成为接入点,并让客户端应用连接到该AP。我相信chromecast使用这种方法在临时连接上共享真正的wifi网络细节。这可能很难做到正确,我不熟悉任何现成的解决方案。

根据您的使用情况,您可以使用以下两种方法之一来执行此操作:一次性配置,或仅将实际的Wi-Fi网络详细信息传输到设备。在后一种情况下,一旦加入实际的Wi-Fi网络,您仍然需要本地网络发现。