[ 登录 ][ 注册 ] 天极传媒: 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
您现在的位置: IT专家网 > 开发平台子站

使用.NET实现断点续传

作者: 蓝色天使,  出处:博客, 责任编辑: 王尔玉, 
2007-10-10 10:06
  顾名思义,断点续传就是在上一次下载时断开的位置开始继续下载。在HTTP协议中,可以在请求报文头中加入Range段,来表示客户机希望从何处继续下载。

  代码实现

  了解了.NET提供的相关的类,那么,我们就可以方便的实现了。

  代码如下:

static void Main(string[] args)
{
 string StrFileName="c:\\aa.zip"; //根据实际情况设置
  string StrUrl="http://www.xxxx.cn/xxxxx.zip"; //根据实际情况设置
 //打开上次下载的文件或新建文件
 long lStartPos =0;
 System.IO.FileStream fs;
 if (System.IO.File.Exists(StrFileName))
 {

 fs= System.IO.File.OpenWrite(StrFileName);
 lStartPos=fs.Length;
 fs.Seek(lStartPos,System.IO.SeekOrigin.Current); //移动文件流中的当前指针
 }
 else
 {
  fs = new System.IO.FileStream(StrFileName,System.IO.FileMode.Create);
 lStartPos =0;
 }
 //打开网络连接
  try
 {
 System.Net.HttpWebRequest request =(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(StrUrl);
 if ( lStartPos>0)
 request.AddRange((int)lStartPos); //设置Range值
 //向服务器请求,获得服务器回应数据流
 System.IO.Stream ns= request.GetResponse().GetResponseStream();
 byte[] nbytes = new byte[512];
 int nReadSize=0;
 nReadSize=ns.Read(nbytes,0,512);
 while( nReadSize >0)
 {

 fs.Write(nbytes,0,nReadSize);
 nReadSize=ns.Read(nbytes,0,512);
 }
 fs.Close();
 ns.Close();
 Console.WriteLine("下载完成");
 }
 catch(Exception ex)
 {
 fs.Close();
 Console.WriteLine("下载过程中出现错误:"+ex.ToString());
 }
 }

共2页。 9 1 2
  • 本文关键词:

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。

邮件订阅