我试图build立一个iOS应用程序,可以连接到运行macOS或Windows的电脑,并控制这些电脑上的一些东西。 另一个应用程序将安装在这些计算机上,以便iOS上的应用程序可以连接到它们。 但起初我需要发现那些已安装并运行我的应用程序的networking中的计算机。 什么是这样做的好方法? 我想过使用广播,多播或bonjour。 还有其他的select吗? 哪一个最适合我的情况?
我正在计划为MacOS和Windows做两个不同的应用程序,一个用c和c#,另一个用c#,所以networking的东西应该可用于这两个。 提前致谢
到目前为止最简单的选择是使用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,不幸的是我无法评论,因为我没有经验,但我仍然会投票支持简单的广播来保持独立的平台……至少在电脑方面。 🙂