C#本地网络发现自己的代理

时间:2018-06-13 07:47:40

标签: c# sockets p2p software-distribution fileserver

我有这个软件,我们称之为代理,部署在本地网络中的每台机器上。每隔一段时间,它需要从服务器提取更新。 这意味着,该网络中的每台机器都连接到我的服务器并下载几MB的新版本。

我想要实现的目标: 一旦第一台机器从服务器提取更新,其他机器应该从对等网络中获得更新已经获得的更新。

到目前为止我的想法:

  1. 使用网络中的共享文件夹,第一台获取该文件夹的计算机 update将其放入该共享文件夹中。每台机器检查 在转到我的服务器之前首先共享文件夹。这有效,但我明白了 如果在Windows,防火墙,访问中未启用共享,则会出现问题 权利等。

  2. 每个代理打开一个可用于内部网络的套接字(可能在随机端口上打开127.0.0.1上的tcp套接字 代理商知道)。在拉动更新之前,广播到 您请求更新的网络,如果没有人回复它们 有更新,继续到服务器。否则,从中获取更新 回复的代理人,因为他们可能已经得到了更新 来自服务器或其他代理商。我在这里遇到的问题 是我真的不知道如何继续网络 发现,以及这可能产生的性能影响。

  3. 构建本地服务器应用程序,将其发布到所有其他代理连接到的内部网络(其中一台计算机)的某个节点上 更新。此本地服务器仅在第一次获取更新, 并且它“缓存”它,将它交给任何请求它的代理。这是我的 最不喜欢的选项,因为它意味着本地服务器。如果那个 失败,没有其他节点可以获得更新。当然,我可以实施 回退机制去真正的服务器,但仍然。并且, 每个代理人都需要确切知道“主人”是谁,以及那个 会更难管理。

  4. 如果你们有任何更好的想法,或者任何引导我的指南,我将不胜感激。

    谢谢。

1 个答案:

答案 0 :(得分:1)

基本上你

  • 要么必须维护已有更新的计算机列表,要随机选择一个以获取更新,
  • 或者有一个广播查询,所有带有更新的计算机都会响应并选择一个。

我会以点对点的精神参与广播。