首页 / C# / c# – 如何打开多个连接下载单个文件?
c# – 如何打开多个连接下载单个文件?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何打开多个连接下载单个文件?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1965字,纯文字阅读大概需要3分钟。
内容图文
我知道有些服务器不允许这样做,但有些服务器确实支持多个连接.我能够下载部分文件并在下载最后一部分后将它们组合起来,因为我正在为每个文件部分使用单独的后台工作程序…所以它很慢并且一次下载一个文件部分.我想立即开始下载每个文件部分.但我不知道该怎么做.
告诉我哪种方法更快,以及如何使用它们.
Backgroundworker
Threads
ThreadPool
谢谢你的帮助.
解决方法:
如果您在HTTP中下载文件,
你可以使用这个方法:
http://msdn.microsoft.com/en-us/library/7fy67z6d.aspx
因此,您必须将文件拆分为多个临时文件,然后合并它们.
但是你必须确保在服务器端启用了这个功能(我不知道它是否默认).
正如一些人所说,你将获得性能,这就是免费下载管理器非常有用的原因:它可以同时下载文件的多个部分.
要使用多线程执行此操作:
class FileDownloader{
int Start;
int Count;
string PathTemp;
string Url;
FileDownloader(url,start,count){
url = Url;
Start =start;
Count = count;
PathTemp = Path.GetTempFileName()
}
void DoDownload(){
//do your thing with stream and request and save it to PathTemp
}
}
以下是初始化下载列表的代码:
List<FileDownloader> filewonloadersList = new ListFileDownloader>();
System.Net.WebRequest req = System.Net.HttpWebRequest.Create("https://stackoverflow.com/robots.txt");
req.Method = "HEAD";
System.Net.WebResponse resp = req.GetResponse();
int responseLength = int.Parse(resp.Headers.Get("Content-Length"));
for(int i = 0;i<response.Length;i = i + 1024){
filewonloadersList.Add(new FileDownloader("https://stackoverflow.com/robots.txt",i,1024));
}
并且你的程序会在列表中初始化X FileDownloader(没有把这个逻辑放在这里,我专注于那些东西)
List<Thread> threadList = new List<Thread>();
foreach(FileDownloader aFildeDownloader in filewonloadersList)
{
Thread aThread = new Thread(aFildeDownloader.DoDownload) //this method will be called when the thread starts
threadList.Add(aThread);
aThread.Start();
}
foreach(Thread aThread in threadList)
{
aThread.Join();//will wait until the thread is finished
}
//all the downloader finished their work now you can go through your downloader list and concatenante the temps files
内容总结
以上是互联网集市为您收集整理的c# – 如何打开多个连接下载单个文件?全部内容,希望文章能够帮你解决c# – 如何打开多个连接下载单个文件?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。