公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#實現http協議下載的斷點續傳

admin
2024年3月12日 23:40 本文熱度 989

我們寄希望于萬能的解決方案,但是現實的情況總是很糟糕。在軟件編程的世界中,技術分散的情況尤為嚴重,且不說各種語言擁有的優勢不能融合,單就一門語言而言,就擁有眾多的技術和相關技術需要學習。網絡編程就是這種情況,tcp、udp、http和soap相關的協議,我們不得不在同一個應用中使用不同難以整合的技術。tcp講究精準,udp講究性能,http對于穿越外網有這天然的優勢,soap對于講究編程模型的人來說是福音。

其實斷點續傳,眾多技術都可以實現,只是難易程度而以。經過比較分析發現,http對于斷點下載比較容易實現,它最成功的地方在于,不需要服務端的實現,只需將需要下載的文件放置在iis服務器中即可。

下面我會根據下面一段代碼分析http協議的。

        /// <summary>
        /// 下載方法
        /// </summary>
        /// <param name="uri">下載地址的URI</param>
        public void DownLoad(object obj)
        {

            //比如uri=http://localhost/Rabom/1.rar;iis就需要自己配置了。
            string uri = obj.ToString();
            //截取文件名
            string fileName = uri.Substring(uri.LastIndexOf(@"/") + 1);

            //構造文件完全限定名,準備將網絡流下載為本地文件
            string fileFullName = Application.StartupPath + @"\download\" + fileName;
            //構造文件的配置文件的完全完全限定名
            string fileCfgName = Application.StartupPath + @"\download\" + fileName+".cfg";


            //本地構造文件流
            FileStream fs;
            //本地配置文件流
            FileStream fsCfg;

            if (File.Exists(fileFullName))
            {
                //如果存在配置文件,則繼續下載
                if (File.Exists(fileCfgName))
                {
                    fs = new FileStream(fileFullName, FileMode.Append, FileAccess.Write, FileShare.Write);
                    fsCfg = fs = new FileStream(fileFullName, FileMode.Append, FileAccess.Write, FileShare.Write);
                }
                else
                {
                    return;//暫且這樣
                }
            }
            else
            {
                fs = new FileStream(fileFullName, FileMode.Create);
                fsCfg = new FileStream(fileCfgName, FileMode.Create);
            }

            //開辟內存空間
            byte[] buffer = new byte[512];

            //請求地址
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
            //請求開始位置
            request.AddRange((int)fs.Length);

            //獲取網絡流
            Stream ns = request.GetResponse().GetResponseStream();

            //獲取文件實際長度
            long contentLength = request.GetResponse().ContentLength;
            //獲取文件讀取到的長度
            int length = ns.Read(buffer, 0, buffer.Length);

            while (length > 0)
            {   

                //將字節數組寫入流
                fs.Write(buffer, 0, buffer.Length);

                //繼續下載
                buffer = new byte[512];
                length = ns.Read(buffer, 0, buffer.Length);
            }

            ns.Close();
            fs.Close();
            fsCfg.Close();

     }

在上面的代碼中,比較重要的就是類HttpWebRequest,這個類封裝了http協議訪問網絡資源的方法,與WebClient不同的是,HttpWebRequest允許我們使用網絡流的方式進行下載,我們通過URI創建一個網絡流,我們就可以開始獲取我們需要的數據了。在http協議的報文中,會進行詳細的描述,當然描述的內容很多,HttpWebRequest都幫我們做了,說點題外話,http協議會將我們計算機環境寫進報文,其中包括計算機名,計算機所在的ip地址。當然也包括我們所講的斷點下載的關鍵報文Range,這個報文就是我們需要開始下載文件的起始位置,這樣我們就可以根據本地文件已經下載了多少,為斷點下載時所要求的起始位置提供依據。

本地文件剛創建的時候,fs.Lenght為0所以我們在iis服務器上請求的網絡流的游標是在流的起始位置,當我們停止下載后,再度下載該資源的時候,網絡流的游標位置會根據range的值設置到相應的位置,這樣我們就可以斷點下載了。


該文章在 2024/3/13 0:24:25 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 18禁动漫美女禁处被爆桶出水 | 国产av一区二区三区日韩 | 国产欧美色一区二区三区 | 国产亚洲欧美另类一区二区 | 91精品国产高清一区 | 国产午夜精品亚洲精品国产 | 精品午夜福利在线观看 | 国产偷啪视频一区 | 国产真街拍裙底系列在线观看 | 国产午夜福利内射青草 | 丰满少妇人妻hd高清 | 国产麻豆剧果冻传媒白晶晶 | 国产av永久精品无码 | 国产av女人一区二区精品 | 国产成人精品综合在线 | 2025无码专区人妻系列日韩 | 国产高清不卡一区二区 | 国产精品亚洲片在线观看 | 国产av成人无码精品网站 | 国产69精品久久久久999小说 | 精品色综合久久综合天天 | 国产91在线播放中文 | 91在线无码精品秘在线观看 | 国产午夜精品自在自线之la | 2025国自产拍国偷 | 69黄在线看片 | 国产成人久久精品区一区二区 | 国产无码av一区二区在线入口 | 精品亚洲v乱码一区二区 | 国产av福利第一精品 | 91精品综合国产在线观看 | 国产成人亚洲精品无码青app | 成人午夜大片免费看爽爽爽 | 国产精品成人无码av无码免费 | 成人免费毛片在线观看 | 国产成人av一区二区三区无码 | 国产成人综合久久久久久 | 91成人免费福利网站在线 | 国产成人午夜精品免费视频 | 国产高潮抽搐喷浆a精品视频 | 丰满少妇一区二区 |