到目前为止最简单的选择将使用IP/UDP广播数据包。在计算机上运行的应用程序(运行任何操作系统)都可以在预定义的UDP端口(例如9999)上监听,而当iOS设备想要'扫描'网络时,它将发送一个IP/UDP广播数据包目的地端口为9999.一旦接收到广播数据包,计算机上的应用程序就可以响应,因为它现在知道iOS设备的IP地址,你可以从那里拿东西。
处理离开网络的计算机的最简单方法是在计算机上运行的应用程序将此事实传达给iOS设备,因为它已经知道iOS设备的IP地址。但是,如果保持最新的计算机列表至关重要,那么某种轮询机制是不可避免的,因为计算机可能因任何原因崩溃而没有机会发送再见消息。
可以按如下方式使用多播:计算机为预定义多播组(例如224.1.1.1)周期性发送IGMP连接,并且iOS设备在想要“扫描”网络时发送目的地为224.1.1.1的多播UDP数据包。多播UDP数据包将由计算机接收,因为它们已经加入了多播组224.1.1.1,然后计算机可以开始与iOS设备进行通信,此时IP地址已知。但是,这似乎过于复杂,并没有真正提供任何优势。使用多播的关键在于节省带宽,但节省的带宽量很小。除非您将大量数据从iOS设备发送到所有计算机,否则没有理由顺其自然。
至于Bonjour,很遗憾我无法发表评论,因为我没有经验,但我仍然会投票支持简单的广播以保持平台独立......至少在电脑方面。 :)