【问题标题】:Transferring Files Over a Network [closed]通过网络传输文件[关闭]
【发布时间】:2010-11-23 22:00:27
【问题描述】:

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

【问题讨论】:

    标签: networking file-transfer


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在这 3 个中,它的 HTTP。 “传输文件”的有效行为具有相同的速度,但是:

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

      HTTP 更客观,你连接,说出你想要什么,然后得到它作为答案。不废话了。

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

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

      【讨论】:

        【解决方案3】:

        您是否可以控制两个端点和任何介入的防火墙?与其他选项相比,FTP 对防火墙不太友好。基于 SSH 的工具(sftp、scp)非常好,但已知一些 ISP 会限制或以其他方式干扰加密流量(Comcast,我在看着你!)你考虑过 rsync 吗?在我的工作中,这就是我们用于通过长距离互联网连接传输大量数据集的方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-31
          • 1970-01-01
          相关资源
          最近更新 更多