Sockets 将大型文件从服务器传输到多个客户端的有效方法是什么?

Sockets 将大型文件从服务器传输到多个客户端的有效方法是什么?,sockets,networking,file-io,network-programming,network-protocols,Sockets,Networking,File Io,Network Programming,Network Protocols,我需要同时从服务器向多个客户端传输/多播一个大约>40g文件的大文件,这将只执行一次。在Linux中有什么好的协议可以做到这一点吗?我尝试使用UFTP,但没有成功。您可以使用优秀的bittorrent协议,并通过使用Bittorent Sync将其设置为私有。 有关详细信息,请转到。 我看到的主要优势是: 它的设计目的是传输大文件(如果网络中断,这不是问题) 它是免费的 它是跨平台的:Windows、Linux(i386、x64、ARM、PowerPC)、FreeBSD、Mac、Android

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

您可以使用优秀的bittorrent协议,并通过使用Bittorent Sync将其设置为私有。 有关详细信息,请转到。
我看到的主要优势是:

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

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

      这是一次性的还是常规的事情?如果是常规的事情,为什么会有如此多的数据-是否可以进行部分更新?4数据是否必须可靠地传输?如果没有,那么考虑使用UDP组播。每个客户端订阅一个多播IP,然后您可以将数据一次性发送到该IP,网络将为您向所有订户广播数据。但如果您需要可靠性,则使用TCP,但它没有广播功能,因此您必须将完整数据单独复制到每个客户端。想到BitTorrent,但这里的推荐问题是无关紧要的。我已经成功地使用了LAN上的多播(如Remy上面所建议的),处理丢失的数据包时,让丢失数据包的任何客户端向服务器发送请求,要求服务器重新传输数据包。(为了使其正常工作,您应该在每个数据包中包含一个头文件,指示其内容与文件顶部的偏移量,以便客户端可以轻松跟踪文件中的哪些部分,哪些部分没有/仍然需要)您说“我尝试使用UFTP,但它不起作用”的确切含义是什么?什么不起作用?错误是什么?UFTP应该可以很好地解决这个问题。另外,btsync(现在是resillio sync)不会在局域网外传输本地连接的数据。