【问题标题】:Fastest way to transfer a file over UDP通过 UDP 传输文件的最快方法
【发布时间】:2011-08-26 02:08:16
【问题描述】:

通过 UDP 发送文件的最快方式是什么?
A) 为文件的每个块创建一个大数据报,发送它,然后等待客户端的确认,然后再继续
B) 为文件的每个块创建一个大数据报,发送多个(编号的)数据报,并等待收到所有部分的确认,然后继续传输。如果某些部分在 5 秒内未收到,请重新传输这些部分
C) 其他一些我还不知道的方法

【问题讨论】:

  • 如果您想要可靠的文件传输,请使用 TCP。我只会将 UDP 用于您可以容忍一些丢失并简单地发送数据包而不检查的情况,包括一些时间戳,以便您可以丢弃客户端上的乱序数据包。
  • @tvanfosson:NFS 使用 UDP,因为它比 TCP 更轻量级。你会得到一些非常棒的速度。 stackoverflow.com/questions/584112/…
  • @Chris 但 NFS 不传输文件。它传输单个块。
  • 我不能使用 TCP,因为我需要能够穿越防火墙。我正在编写一个 P2P 传输程序(用于游戏的流式地图),并且我需要能够穿越防火墙,因为我的用户(通常)不知道如何在他们的路由器上转发端口。

标签: c# networking udp


【解决方案1】:

方案 B 比 A 快,但方案 C 更快(也更安全):尝试使用 TCP 而不是 UDP

【讨论】:

  • TCP 无法使用,原因在上面的评论中。
【解决方案2】:

实际上,我在 (C) 中能想到的任何东西都会比它们中的任何一个都快几英里。他们都没有使用窗口,所以他们不能使用所有可用的带宽延迟产品。 (B) 实际上是一个非常糟糕的协议设计。

当您将所有必需的功能添加到 UDP 时,您就拥有了 TCP。使用 TCP。

【讨论】:

  • 无法使用 TCP。请参阅我发布的关于我的问题的评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多