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



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

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

到目前为止,我的想法:

  1. 使用网络中的共享文件夹,第一台获得 "更新"将其放入该共享文件夹。每台机器都会检查 在转到我的服务器之前,先共享文件夹。这有效,但我得到 在 Windows、防火墙、Access 中未启用共享时的问题 权利等

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

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

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

谢谢。

本质上是你

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

我会本着点对点的精神参加广播。

最新更新