C#多线程下载一个文件
这里只是说明多线程下载的理论基础,嘿嘿,并没有写多线程下载的代码,标题党了,但是我相信,看完这个代码就应该能够多线程的方式去下载一个文件了.
多线程下载是需要服务器支持的,这里并没有判断服务器不支持的情况.
其原理
在发送 http 请求时标记头文件,告诉服务器我需要这个文件的 第几个字节 到 第几个字节.如果服务器不支持让你分段取文件,可以想想看服务器会怎么做. 没错,他把整个文件给你了.
一定得判断 服务器不支持 的情况.
public void Worker()
{
string url = "http://files.cnblogs.com/cnryb/HttpSer.zip";
string path = "a.zip"; using (FileStream fs = new FileStream(
path,
FileMode.OpenOrCreate,
FileAccess.Write,
FileShare.Read,
2048,
FileOptions.RandomAccess
))
{
//先下载文件的第100个字节到最后
fs.Seek(100, SeekOrigin.Begin);
Down(fs, url, 100); //下载前100个字节
fs.Seek(0, SeekOrigin.Begin);
Down(fs, url, 0, 99);
}
}
public void Down(FileStream fs, string url, int start, int end = -1)
{
HttpWebRequest hwr = WebRequest.Create(url) as HttpWebRequest;
if (end == -1)
hwr.AddRange(start);
else
hwr.AddRange(start, end);
HttpWebResponse resp = hwr.GetResponse() as HttpWebResponse;
using (Stream input = resp.GetResponseStream())
{
byte[] bs = new byte[2048];
int count;
while ((count = input.Read(bs, 0, bs.Length)) != 0)
{
fs.Write(bs, 0, count);
}
}
}
C#多线程下载一个文件的更多相关文章
- JAVA多线程下载网络文件
JAVA多线程下载网络文件,开启多个线程,同时下载网络文件. 源码如下:(点击下载 MultiThreadDownload.java) import java.io.InputStream; im ...
- Android 开发工具类 27_多线程下载大文件
多线程下载大文件时序图 FileDownloader.java package com.wangjialin.internet.service.downloader; import java.io.F ...
- Android多线程下载大文件解析
1.多线程介绍 用过迅雷的同学都知道.迅雷有个功能叫做多线程.另一个叫离线下载,我们这里重点介绍一下多线程下载.多线程,顾名思义就是非常多歌线程同一时候在执行,为什么要提出多线程这个概念呢?由于有时候 ...
- C# 使用ftp下载一个文件夹下的所有文件,包括子目录文件夹
这篇博客给大家补充一个方法,就是得到一个目录下的所有文件名称.在前端调用,大家写一个递归去遍历就可以了,我在这里就不在写了.具体ftp下载的方法在我的另一篇博客里有,需要的可以去看一下. /// &l ...
- python多线程下载ts文件
# -*- coding: utf-8 -*- """ Created on Wed Aug 22 15:56:19 2018 @author: Administrato ...
- QT QFtp使用实例 从FTP下载一个文件
1. ftp://ftp.denx.de/pub/u-boot/lowboot-1.0.0.patch.gz 下载文件 FtpGet.h #ifndef FTPGET_H #define FTPGE ...
- 从Internet下载一个文件
使用的.net框架下的System.Net.WebClient类的DownloadFile()方法以图片为例:
- PYTHON文件多线程下载
其实,在一般的文件编程中,这有两个概念要说明: 第一是,下载一个大文件,将这个大文件多为多线程. 第二是,下载N多小文件,将每个线程指定下载多个小文件. 现在实现的是多线程下载一个大文件. 今天完成了 ...
- urllib结合 concurrent.futures 多线程下载文件。
示例: #!/usr/bin/env python3 # -*- coding:utf-8 -*- # @Time: 2020/12/16 10:42 # @Author:zhangmingda # ...
随机推荐
- WebApi2 jsonp跨域问题
一:故事背景 以前在写WebApi2的时候,一直是用作前后端分离(WebApi2 +angularjs),可是最近自己在给WebApp写接口的时候遇到了很多坑,总结一下就是跨域问题.而跨域问题 ...
- GodSon Easyui 结合Pluplaod插件的文件分割上传
自己整理了一个文件分割上传的实例,提供研究学习使用. 在线查看效果 下载该资源pluplaod文件分割上传Demo.zip 简介: 首先,进入页面会看到下面的效果: 点击一个按钮,出现如图 ...
- c++ 小片段
void test_string() { string sen = "Connection will be closed if there is no " "read/w ...
- [转载]用.NET开发的磁力搜索引擎——Btbook.net
去年10月份开始研究相关的协议与资料,中途乱七八糟的事情差点没坚持下来,寒假里修修补补上礼拜把Btbook发布了,经过社交网络的推广之后,上线第三天UV就达到了两万多,也算是对这几个月工作的一点肯定吧 ...
- [转载]C#中播放背景音乐几种的方法
最经在写winform程序,其中有用到播放背景音乐 特此收集了一些网上的教程: 1.调用非托管的dll using System.Runtime.InteropServices; //DllImpor ...
- 作为 .Net 攻城师,所必需掌握的 .Net Profiling 技术
众所周知,性能问题是所有实用应用在迭代过程中必然要面对的问题.对于此类问题,简单地投入更多硬件资源的做法可能会取得一定效果.但总的来看,此类做法的边际成本是不断上升的.换言之,随着性能需求的上涨,要换 ...
- Nagios的安装配置与应用之五监控远程Linux服务器
本文出自 “曹坏水” 博客,请务必保留此出处http://cao2012.blog.51cto.com/366908/1132113 NRPE是Nagios的一个功能扩展,它可在远程Linux和UNI ...
- VS2008调试技巧收集备用
VS2005调试技巧集合 http://blog.csdn.net/rainylin/archive/2007/09/06/1775125.aspx 下面有从浅入深的6个问题,您可以尝试回答一下 一个 ...
- marmalade android 5.0 JNI 调用失败的解决方案
5.0 真机日志如下:sart/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: JNI CallVoidMethodV call ...
- JVM内存状况查看方法和分析工具
Java本身提供了多种丰富的方法和工具来帮助开发人员查看和分析GC及JVM内存的状况,同时开源界和商业界也有一些工具可用于查看.分析GC及JVM内存的状况.通过这些分析,可以排查程序中内存泄露的问题及 ...