zoukankan      html  css  js  c++  java
  • Windows Mobile上实现断点续传。

    最近看到有人在网上讲论WM上的下载工具,就提供个断点传的思路,供大家交流。

    断点续传就是在上一次下载 时断开的位置开始继续下载。在HTTP协议中,可以在请求报文头中加入Range段,来表示客户机希望从何处继续下载。

    代码如下,在WM6环境下测试通过。

    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());
          }
      }

  • 相关阅读:
    分布式系统关注点(3)——过去这几十年,分布式系统的「数据一致性」精华都在这了!
    分布式系统关注点(1)——不知道是不是最通俗易懂的《数据一致性》剖析了
    《西虹市首富》给我们技术人带来的思考
    Kaazing Gateway简单使用
    pylot测试工具环境搭建
    NodeJS学习笔记
    JavaScript逗号操作符
    翻译:SockJS-node文档(一)
    【原】Learning Spark (Python版) 学习笔记(二)----键值对、数据读取与保存、共享特性
    2015年总结与2016年目标和计划
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2458393.html
Copyright © 2011-2022 走看看