我有这个软件,我们称之为代理,部署在本地网络中的每台机器上。每隔一段时间,它需要从服务器提取更新。 这意味着,该网络中的每台机器都连接到我的服务器并下载几MB的新版本。
我想要实现的目标: 一旦第一台机器从服务器提取更新,其他机器应该从对等网络中获得更新已经获得的更新。
到目前为止我的想法:
使用网络中的共享文件夹,第一台获取该文件夹的计算机 update将其放入该共享文件夹中。每台机器检查 在转到我的服务器之前首先共享文件夹。这有效,但我明白了 如果在Windows,防火墙,访问中未启用共享,则会出现问题 权利等。
每个代理打开一个可用于内部网络的套接字(可能在随机端口上打开127.0.0.1上的tcp套接字 代理商知道)。在拉动更新之前,广播到 您请求更新的网络,如果没有人回复它们 有更新,继续到服务器。否则,从中获取更新 回复的代理人,因为他们可能已经得到了更新 来自服务器或其他代理商。我在这里遇到的问题 是我真的不知道如何继续网络 发现,以及这可能产生的性能影响。
构建本地服务器应用程序,将其发布到所有其他代理连接到的内部网络(其中一台计算机)的某个节点上 更新。此本地服务器仅在第一次获取更新, 并且它“缓存”它,将它交给任何请求它的代理。这是我的 最不喜欢的选项,因为它意味着本地服务器。如果那个 失败,没有其他节点可以获得更新。当然,我可以实施 回退机制去真正的服务器,但仍然。并且, 每个代理人都需要确切知道“主人”是谁,以及那个 会更难管理。
如果你们有任何更好的想法,或者任何引导我的指南,我将不胜感激。
谢谢。
答案 0 :(得分:1)
基本上你
我会以点对点的精神参与广播。