【问题标题】:What is efficient way to transfer a large file from server to multiple clients?将大文件从服务器传输到多个客户端的有效方法是什么?
【发布时间】:2014-04-26 03:44:44
【问题描述】:

我需要同时从服务器向多个客户端传输/多播大约 >40g 文件的大文件,并且这只会完成一次。在 Linux 中有什么好的协议可以做到这一点吗?我尝试使用 UFTP,但它不起作用。

【问题讨论】:

  • 这是一次性的还是常规的?如果是常规的事情,为什么会有这么多数据 - 是否可能进行部分更新?4
  • 数据必须可靠传输吗?如果不是,则考虑使用 UDP 多播。每个客户端订阅一个多播 IP,然后您可以向该 IP 发送一次数据,网络将为您将数据广播给所有订阅者。但是,如果您需要可靠性,请使用 TCP,但它没有广播功能,因此您必须单独将完整数据复制到每个客户端。
  • BitTorrent 浮现在脑海中,但推荐问题在这里是题外话。
  • 我已经成功地使用了 LAN 上的多播(正如 Remy 上面建议的那样),并通过让任何丢失数据包的客户端向服务器发送请求来处理丢失的数据包,要求它重新传输包。 (为了使它正常工作,您应该在每个数据包中包含一个头文件,指示其内容的文件顶部偏移量,以便客户端可以轻松跟踪他们拥有文件的哪些部分以及他们没有哪些部分有/还需要得到)
  • 当您说“我尝试使用 UFTP,但它不起作用”时,您究竟是什么意思?什么没用?错误是什么? UFTP 应该可以很好地解决这个问题。

标签: sockets networking file-io network-programming network-protocols


【解决方案1】:

UFTP 应该是解决这种情况的好工具。如果服务器和客户端在同一个 LAN 上,那么它们之间的通信应该不会有任何问题。如果有一个或多个路由器将它们分开,那么您要么必须配置路由器以允许多播流量通过,要么您可以使用 UFTP 的代理服务器在不同网段之间创建桥接。

【讨论】:

    【解决方案2】:

    您可以使用出色的 bittorrent 协议,并通过 Bittorent Sync 将其设为私有。 详情请转至Bittorrent Sync Web Site
    我看到的主要优点是:

    • 它是为传输大文件而设计的(如果您遇到网络中断,这不是问题)
    • 它是免费的
    • 它是跨平台的:Windows、Linux(i386、x64、ARM、PowerPC)、FreeBSD、Mac、Android、IOS 等...
    • 它是安全的(您提供加密密钥)
    • 配置非常简单

    【讨论】:

    • 另外 btsync(现在是 resilio 同步)不会在 LAN 之外传输数据以进行本地连接。
    猜你喜欢
    • 1970-01-01
    • 2010-12-11
    • 2016-05-16
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 2016-12-27
    • 2014-08-08
    相关资源
    最近更新 更多