我需要在 C# 中以最大可用下载速度下载。
FlashGet、IDM 和其他下载管理器似乎都可以。
没什么特别的,他们只是打开多个下载连接到同一个文件并使用分段下载,因此每个连接从文件中提取不同范围的字节。
有关更多信息,请参见例如 - http://www.ehow.com/how-does_4615524_download-accelerator-work.html
对于 C# 方面,您可能希望查看现有的 .NET 项目,例如 - http://www.codeproject.com/Articles/21053/MyDownloader-A-Multi-thread-C-Segmented-Download-M
神奇之处在于多重连接和 httpRange
标头。
假设文件大小为 100MB。您计划打开 10 个连接。因此,对于每个连接,您将下载 10Mb。现在打开一个 http 连接并开始下载相同的文件,但 10 个连接将分配给 10 个不同的段。
连接 1 发送Range: bytes=0-1048575
连接 2 发送Range: bytes=1048576-2097151
等等
您必须在 TCP 协议中设置窗口大小。但是.net 不支持这个未来