麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

上傳下載:在C#中實現斷點續傳

2023-05-12 12:29:37
字體:
來源:轉載
供稿:網友

本文較詳細的介紹了使用C#開發斷點續傳功能的方法,為我們在Visual C#中實現上傳文件功能提供了很好的解決方案。

HTTP協議是一種基于tcp的簡單協議,分為請求和響應兩種。請求協議是由客戶機(瀏覽器)向服務器(WEB SERVER)提交請求時發送報文的協議。響應協議是由服務器(web server),向客戶機(瀏覽器)響應報文時的協議。請求和響應協議都由頭和體組成。頭和體之間以一行空行為分隔。

以下是一個請求報文與相應的響應報文的例子:

GET /image/index_r4_c1.jpg HTTP/1.1

Accept: */*

Referer: http://192.168.3.120:8080

Accept-Language: zh-cn

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705)

Host: 192.168.3.120:8080

Connection: Keep-Alive

HTTP/1.1 200 OK

Server: Microsoft-IIS/5.0

Date: Tue, 24 Jun 2003 05:39:40 GMT

Content-Type: image/jpeg

Accept-Ranges: bytes

Last-Modified: Thu, 23 May 2002 03:05:40 GMT

ETag: "bec48eb862c21:934"

Content-Length: 2827

….

下面我們就來說說"斷點續傳",顧名思義,斷點續傳就是在上一次下載時斷開的位置開始繼續下載。在HTTP協議中,可以在請求報文頭中加入Range段,來表示客戶機希望從何處繼續下載。

比如說從第1024字節開始下載,請求報文如下:

GET /image/index_r4_c1.jpg HTTP/1.1

Accept: */*

Referer: http://192.168.3.120:8080

Accept-Language: zh-cn

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705)

Host: 192.168.3.120:8080

Range:bytes=1024-

Connection: Keep-Alive

.NET中的相關類

1、完成HTTP請求

System.Net.HttpWebRequest

HttpWebRequest 類對 WebRequest 中定義的屬性和方法提供支持,也對使用戶能夠直接與使用 HTTP 的服務器交互的附加屬性和方法提供支持。

HttpWebRequest 將發送到 Internet 資源的公共 HTTP 標頭值公開為屬性,由方法或系統設置。下表包含完整列表。可以將 Headers 屬性中的其他標頭設置為名稱/值對。但是注意,某些公共標頭被視為受限制的,它們或者直接由 API公開,或者受到系統保護,不能被更改。Range也屬于被保護之列,不過,.NET為開發者提供了更方便的操作,就是 AddRange方法,向請求添加從請求數據的開始處或結束處的特定范圍的字節范圍標頭

2、完成文件訪問

System.IO.FileStream

FileStream 對象支持使用Seek方法對文件進行隨機訪問, Seek 允許將讀取/寫入位置移動到文件中的任意位置。這是通過字節偏移參考點參數完成的。字節偏移量是相對于查找參考點而言的,該參考點可以是基礎文件的開始、當前位置或結尾,分別由SeekOrigin類的三個屬性表示。

代碼實現

代碼如下:

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

} }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲精品com | 成年人激情在线 | 色综合激情 | 日本欧美国产 | 日本人乱人乱亲乱色视频观看 | av电影在线观看网站 | 免费香蕉成视频成人网 | 污视频在线免费 | 黄色免费在线网站 | 成人免费在线视频播放 | 91免费视频版 | 日日操操| 国产成人精品网站 | 日日鲁一鲁视频 | 成人综合免费视频 | 国产精品一品二区三区四区18 | 爱高潮www亚洲精品 欧美黄色一级片视频 | 久久久噜噜噜久久熟有声小说 | 精品一区二区三区在线观看国产 | 叶子楣成人爽a毛片免费啪啪 | 久草资源在线观看 | 久久伊人国产精品 | 日韩精品久久久久久久电影99爱 | 国产91九色视频 | 中文字幕 亚洲一区 | 欧美一级特黄a | 免费看黄色一级大片 | 欧美精品激情视频 | 免费在线观看毛片视频 | 爽毛片 | 久久国产精品久久久久久久久久 | 亚州综合图片 | 羞羞视频免费网站男男 | 亚洲天堂中文字幕在线观看 | 久久草草影视免费网 | 免费黄网站在线播放 | 国产午夜精品在线 | av在线直播观看 | 一级毛片免费高清 | 国内精品久久久久久2021浪潮 | 一级国产航空美女毛片内谢 |