2

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

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

4

1 回答 1

1

到目前为止,最简单的选择是使用 IP/UDP 广播数据包。计算机上的应用程序(运行任何操作系统)都可以坐在那里侦听预定义的 UDP 端口(例如 9999),当 iOS 设备想要“扫描”网络时,它将发送一个 IP/UDP 广播数据包,其中包含目标端口为 9999。收到广播数据包后,计算机上的应用程序可以响应,因为它现在知道 iOS 设备的 IP 地址,您可以从那里获取内容。

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

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

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

于 2013-02-01T00:20:27.930 回答