【发布时间】: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