通过网络传输文件

时间:2009-08-29 00:40:56

标签: networking file-transfer

在FTP,HTTP,SSH等中,给定一致的宽带互联网连接,通过网络传输文件的最快方式是什么?

3 个答案:

答案 0 :(得分:1)

其中3个是HTTP。 “转移文件”的有效行为具有相同的速度,但是:

FTP需要太多“对话”来稳定会话,并创建并行连接以传输数据,所有这些“谈话”需要更多时间来开始传输文件。出于同样的原因,由于FTP打开随机端口,您可能会遇到防火墙和路由器问题,特别是如果FTP客户端不支持“被动模式”。

HTTP更客观,您可以连接,告诉您想要什么,并将其作为答案。不要等等等等。

SSH不是传输协议。 SSH代表“Secure Shell”。 如果您指的是SSL,它也不是传输协议,它是一个安全层,通常用于封装HTTP会话。

但也许这不是一个更快的问题,真正的问题是:你想做什么?根据您的问题,这些都不是一个选项。

答案 1 :(得分:1)

如果可以,请使用Socket.SendFile()。这是从A点到B点获取文件的最简单方法。如果不了解您要完成的内容的具体细节,则很难给出更好的建议。 FTP可能就是我会使用的方式,而System.Net有一个相当不错的FtpClient对象,你可以使用,样本记录得相当好。 HTTP和FTP都使用TCP,因此您可能不会看到它们之间存在显着的速度差异,并且HTTP通常会具有其他潜在行为的标头(尝试使用Expect-100继续并且没有凭据上传到需要AUTH的服务器的凭据并看看你的连接会发生什么。使用Socket.SendFile(),因为套接字根据定义是协议不可知的,你可能会通过UDP或TCP使用相同的代码发送文件,但我只建议如果你通过LAN发送数据包丢失几乎为0互联网上的UDP并不是一个好主意。

答案 2 :(得分:0)

您是否可以控制两个端点和任何干预防火墙? FTP比其他选项更不容易防火墙。基于SSH的工具(sftp,scp)非常好,但是已知一些ISP会加密或干扰加密流量(康卡斯特,我正在看你!)你考虑过rsync吗?在我的工作中,这就是我们用于通过长途互联网连接传输大量数据集的方法。