2009-08-29 115 views

回答

1

其中3,其HTTP。 “传输文件”的有效行为具有相同的速度,但是:FTP需要太多“对话”来稳定会话,并创建并行连接来传输数据,所有这些“说话”需要多一点时间开始传输文件。出于同样的原因,由于FTP打开随机端口,您可能在防火墙和路由器方面遇到问题,如果FTP客户端不支持“被动模式”,那就特别重要。

HTTP更客观,你连接,告诉你想要什么,并将其作为答案。没有等等等等等等。

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

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

0

您是否可以控制端点和任何中间防火墙?与其他选项相比,FTP的防火墙友好性更低。基于SSH的工具(sftp,scp)相当不错,但是有些ISP已知可以抑制或干扰加密流量(Comcast,我在看你!)你是否考虑过rsync?在我的工作中,这是我们用于通过长途互联网连接传输大量数据集的工具。

1

如果可以,请使用Socket.SendFile()。这是从A点到B点获取文件的最简单方法。在不知道要完成的具体内容的情况下,很难提供更好的建议。 FTP可能是我会使用,否则System.Net有一个相当不错的FtpClient对象,您可以使用和示例文档相当好。 HTTP和FTP都使用TCP,因此您可能不会看到它们之间的显着速度差异,并且HTTP通常会有其他潜在行为的标头(尝试使用Expect-100继续上传文件并且无需证书到需要AUTH的服务器并查看您的连接会发生什么)。使用Socket.SendFile(),因为套接字根据定义与协议无关,您可以通过UDP或TCP使用相同的代码发送文件,但我只建议如果您通过局域网发送数据包丢失几乎为0 。通过互联网的UDP不是一个好主意。