哪种协议最适合文件传输?

10

我需要传输一份文件,文件大小在100到500MB之间,需要使用可靠且速度快的协议进行传输。同时,由于需要在印度境内传输,协议必须支持低带宽系统。

哪种协议最适合我使用呢?


6
请提供更多关于这个问题的上下文。文件有多大?你是在局域网、高带宽广域网还是低带宽互联网连接上传输文件?请说明。 - Amok
请说明低带宽是多少,是9600bps吗?每个短信的数据包数量是多少或者小于1Mbps?您的连接可靠性如何?连接是否可能会中断?有多少个对等节点(或仅为1对1连接)? - Adriaan
我已经重新标记了它;Balamurgan:如果涉及到C#,请编辑问题并明确表述。 - Adriaan
请看这个链接:http://androidtrainningcenter.blogspot.in/2014/02/best-file-transfer-protocol-which-to.html - Tofeeq Ahmad
6个回答

11

Rsync是解决这个问题的好方法。它的设计目的是远程发送/更新大文件。

  • 运行于命令行,因此您可以将其作为外部进程轻松启动。
  • 它可以同步两个远程文件系统。
  • 它处理大文件大小
  • 它有一个聪明的算法,试图只复制文件中的不同之处
  • 它被广泛实现,并且是开源的。
  • 它具有限速功能,因此您可以限制传输过程中使用的WAN连接的带宽,以避免阻塞其他进程的网络连接。
  • 内部使用zlib对传输的数据块进行压缩处理

原始网站:http://samba.anu.edu.au/rsync/

使用ssh保护rsync:http://www.linux.com/archive/feature/113847

详细功能:http://en.wikipedia.org/wiki/Rsync


9

4

尽管FTP是最有效的文件传输协议,但它很难实现。我会使用HTTP。大多数平台都内置了支持,而且更加适应防火墙。


7
没有必要自己去实现这个协议,直接使用一些现成的库就好了。 - Adam Byrtek
vsftpd是最简单的选择。可以通过apt-get安装。 - admrply

0

对于小文件和/或不太熟练的用户,HTTP可能是最好的选择。需要配置防火墙会让很多用户望而却步。几乎每个网络都允许通过端口80进行http传输,无需特殊配置。

但你提到了大文件。你可以编写传输代码,使其使用范围传输来重试中断的下载。

可能已经有人编写了一个文件传输库,可以自动处理部分传输和重试,但我不知道有哪个。


0

这与文件传输和.NET相关,尽管原帖没有以任何方式提到.NET。

使用MTOM Web服务和.NET 2.0分块发送文件 作者:Tim Mackey
如何使用MTOM(WSE 3)将大文件分块传输通过Web服务

请注意,您需要安装Web Service Enhancements 3.0(您会在文章中找到相关链接)。

祝您有一个愉快的一天!


-5

我认为最好使用TCP协议。它是可靠的,而UDP则不是。虽然UDP作为一种尽力而为的协议更快,但并不“安全”。P2P程序使用UDP,因为它更快,真的不太在意数据包丢失。FTP通常使用TCP。因此,我建议使用TCP和套接字进行编程。使用像120000这样的端口,因为它们是免费的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接