networking - 通过网络传输 60GB 以上文件的选项有哪些?

标签 networking ftp network-programming compression

我即将开始开发一个应用程序来传输非常大的文件,而不需要任何匆忙,但需要可靠性。我希望曾经编写过此类特殊案例的人员能够让我深入了解我将要涉及的内容。

环境将是内网ftp服务器>到目前为止使用事件ftp正常端口的windows系统。我可能还需要在发送之前压缩文件,我记得曾经使用过一个库,它会在内存中压缩,并且大小有限制......对此的想法也将受到赞赏。

如果我需要澄清其他事情,请告诉我。我要求提供一般/更高级别的问题(如果有任何不是真正详细的帮助)。我以前做过正常大小(最多 1GB)的应用程序,但这个似乎我需要限制速度,这样我就不会破坏网络或类似的东西。

感谢您的帮助。

最佳答案

我认为你可以从种子中获得一些灵感。

Torrent 通常将文件分解为可管理的片段并计算它们的哈希值。后来他们把它们一 block 一 block 地转移。每个部分都会根据哈希值进行验证,并且仅在匹配时才被接受。这是非常有效的机制,可以让传输从多个源发生,并且可以重新启动任意次数,而不必担心数据损坏。

对于从服务器到单个客户端的传输,我建议您创建一个 header ,其中包含有关文件的元数据,以便接收者始终知道会发生什么,也知道已收到多少数据,并且还可以检查收到的数据反对哈希值。

我实际上已经在客户端服务器应用程序上实现了这个想法,但数据大小要小得多,比如 1500k,但可靠性和冗余是重要因素。这样,您还可以有效地控制您希望允许通过应用程序的流量。

关于networking - 通过网络传输 60GB 以上文件的选项有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12412099/

相关文章:

configuration - elasticsearch 多个 nic 绑定(bind)网络接口(interface)

linux - 是::ffff:127.0.0.1 本地主机吗?

sockets - 如何格式化 HTTP 响应

java - 使用自己的 Java 软件的自定义更新实现

C# 文件访问错误

hadoop - FileInputFormat.setInputPath 中的 FTP 文件名

c# - 如何从 FTP 显示下载进度

java - 从 Tomcat : No buffer space available 发送 SMTP 消息时出错

sockets - 了解WebSockets

c++ - 这个 boost-asio UDP 广播代码应该如何只与本地主机一起工作?