我正在寻找一个玩具应用程序供我个人使用(并可能与朋友分享),以实现本地网络上的点对点共享状态。例如,假设我想为您所在的当前建筑物的名称实现它(假设网络拓扑很奇怪,并且多个建筑物占用同一个 LAN)。这个想法是,如果您运行应用程序,您可以设置您所在的建筑物,并且您可以看到在本地网络上运行该应用程序的每个其他用户的建筑物。
问题是,实现这一点的最佳传输/网络层技术是什么?
我最初的想法是使用 UDP 多播,但我对它进行的研究越多,我就越害怕它:虽然这项技术很棒而且看起来很容易使用,但如果应用程序不是为特定站点部署量身定制的,它似乎也最有可能让愤怒的网络管理员访问您。
因此,我想知道,因为这是一个带宽相对较低的应用程序——每个客户端可能每 4-5 分钟左右最多更新一次,可能不超过 25-50 个客户端——它是否可能在许多情况下“更便宜”使用另一种策略的方法:
- 多播:找到一种方法从 239.255/16 中选择一个众所周知的多播地址,并在启动时让感兴趣的应用程序加入该组。
- 广播:每次某人的状态发生变化时发送一条 UDP 广播消息(并在应用程序启动时发出一个“刷新”广播,之后每个客户端直接回复请求用户的当前状态)。
- 单播:在应用程序开始时发送一个 UDP 广播来宣布兴趣,当客户端的状态发生变化时,它会直接向每个已宣布的客户端发送一个 UDP 数据包。这会导致最高流量,但可能不太可能用不必要的广播数据包惹恼其他系统。它还引入了应用程序崩溃时的潜在并发症(就产生不必要的流量而言)。
多播无疑是最适合这项工作的技术,但我想知道是否值得避免相关的麻烦,因为这只是一个“玩具应用程序”,而不是用于专业网络管理员部署和配置的关键业务服务。