发现网络上安装了我的应用程序的计算机



我正在尝试为iOS构建一个应用程序,该应用程序可以连接到运行macOS或windows的计算机,并控制这些计算机上的一些东西。另一个应用程序将安装在这些计算机上,以便iOS上的应用程序可以连接到它们。但一开始,我需要在网络中发现那些安装并运行了我的应用程序的计算机。做这件事的好方法是什么?我考虑过使用广播、多播或bonjour。还有其他选择吗?哪一个最适合我的情况?

我计划为macOS和windows做两个不同的应用程序,一个使用objective c,另一个使用c#,所以这两个应用程序都应该可以使用网络。提前感谢

到目前为止,最简单的选择是使用IP/UDP广播数据包。计算机上的应用程序(运行任何操作系统)都可以坐在那里监听预定义的UDP端口(例如9999),当iOS设备想要"扫描"网络时,它会发送一个目标端口为9999的IP/UDP广播数据包。收到广播数据包后,计算机上的应用程序可以做出响应,因为它现在知道iOS设备的IP地址,你可以从那里拿走东西。

处理计算机脱离网络的最干净的方法是让计算机上运行的应用程序将这一事实传达给iOS设备,因为它已经知道iOS设备的IP地址。但是,如果保持当前的计算机列表至关重要,那么某种轮询机制是不可避免的,因为计算机可能会因任何原因崩溃,而没有机会发送再见消息。

多播可以按如下方式使用:计算机定期向预定义的多播组(例如224.1.1.1)发送IGMP加入,iOS设备在想要"扫描"网络时发送目的地为224.1.1.1的多播UDP数据包。多播UDP数据包将由计算机接收,因为它们已经加入224.1.1.1的多播组,然后计算机可以在IP地址已知的情况下开始与iOS设备通信。然而,这似乎过于复杂,并没有真正提供任何优势。使用多播的全部目的是节省带宽,但节省的带宽量微乎其微。除非你打算从iOS设备向所有计算机发送大量相同的数据,否则根本没有理由走这条路。

至于Bonjour,不幸的是,我无法对此发表评论,因为我没有任何经验,但我仍然会投票支持简单的广播,以保持平台独立。。。好吧,至少在计算机方面。:)

相关内容

最新更新