成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#HTTP文件傳輸?shù)膶?shí)現(xiàn)淺析

開發(fā) 后端
C#HTTP文件傳輸?shù)膶?shí)現(xiàn)是如何辦到的呢?C#HTTP文件傳輸主要使用到的類是什么呢?C#HTTP文件傳輸?shù)木唧w步驟是什么呢?那么本文就向你詳細(xì)介紹具體的實(shí)現(xiàn)方法和相關(guān)的概念。

C# HTTP文件傳輸是什么呢?其實(shí)很多人都有過使用網(wǎng)絡(luò)螞蟻或網(wǎng)絡(luò)快車軟件下載互聯(lián)網(wǎng)文件的經(jīng)歷,這些軟件的使用可以大大加速互聯(lián)網(wǎng)上文件的傳輸速度,減少文件傳輸?shù)臅r(shí)間。這些軟件為什么有如此大的魔力呢?其主要原因是這些軟件都采用了多線程下載和斷點(diǎn)續(xù)傳技術(shù)。如果我們自己來編寫一個(gè)類似這樣的程序,也能夠快速的在互聯(lián)網(wǎng)上下載文件,那一定是非常愉快的事情。下面我就講一講如何實(shí)現(xiàn)C# HTTP文件傳輸?shù)某绦颍銜?huì)看到利用C#語言編寫網(wǎng)絡(luò)應(yīng)程序是多么的容易,從中也能體會(huì)到C#語言中強(qiáng)大的網(wǎng)絡(luò)功能。

C# HTTP文件傳輸我們要明白什么是HTTP協(xié)議

HTTP亦即Hpyer Text Transfer Protocal的縮寫,它是現(xiàn)代互聯(lián)網(wǎng)上最重要的一種網(wǎng)絡(luò)協(xié)議,超文本傳輸協(xié)議位于TCP/IP協(xié)議的應(yīng)用層,是一個(gè)面向無連接、簡單、快速的C/S結(jié)構(gòu)的協(xié)議。HTTP的工作過程大體上分連接、請(qǐng)求、響應(yīng)和斷開連接四個(gè)步驟。C#語言對(duì)HTTP協(xié)議提供了良好的支持,在.NET類庫中提供了WebRequest和WebResponse類,這兩個(gè)類都包含在System.Net命名空間中,利用這兩個(gè)類可以實(shí)現(xiàn)很多高級(jí)的網(wǎng)絡(luò)功能,本文中多線程文件下載就是利用這兩個(gè)類實(shí)現(xiàn)的。 WebRequest和WebResponse都是抽象基類,因此在程序中不能直接作為對(duì)象使用,必須被繼承,實(shí)際使用中,可根據(jù)URI參數(shù)中的URI前綴選用它們合適的子類,對(duì)于HTTP這類URI,HttpWebRequest和HttpWebResponse類可以用于處理客戶程序同WEB服務(wù)器之間的HTTP通訊。

C# HTTP文件傳輸中HttpWebRequest類

它實(shí)現(xiàn)了很多通過HTTP訪問WEB服務(wù)器上文件的高級(jí)功能。HttpWebRequest類對(duì)WebRequest中定義的屬性和方法提供支持,HttpWebRequest將發(fā)送到Internet資源的公共HTTP標(biāo)頭的值公開為屬性,由方法或系統(tǒng)設(shè)置,常用的由屬性或方法設(shè)置的HTTP標(biāo)頭為:接受, 由Accept屬性設(shè)置, 連接, 由Connection屬性和KeepAlive屬性設(shè)置, Content-Length, 由ContentLength屬性設(shè)置, Content-Type, 由ContentType屬性設(shè)置, 范圍, 由AddRange方法設(shè)置. 實(shí)際使用中是將標(biāo)頭信息正確設(shè)置后,傳遞到WEB服務(wù)器,WEB服務(wù)器根據(jù)要求作出回應(yīng)。

C# HTTP文件傳輸之HttpWebResponse類

它繼承自WebResponse類,專門處理從WEB服務(wù)器返回的HTTP響應(yīng),這個(gè)類實(shí)現(xiàn)了很多方法,具有很多屬性,可以全面處理接收到的互聯(lián)網(wǎng)信息。在HttpWebResponse類中,對(duì)于大多數(shù)通用的HTTP標(biāo)頭字段,都有獨(dú)立的屬性與其對(duì)應(yīng),程序員可以通過這些屬性方便的訪問位于HTTP接收?qǐng)?bào)文標(biāo)頭字段中的信息,本例中用到的HttpWebResponse類屬性為:ContentLength 既接收內(nèi)容的長度。

有了以上的了解后,下面看看這兩個(gè)類的用法,要?jiǎng)?chuàng)建HttpWebRequest對(duì)象,不要直接使用HttpWebRequest的構(gòu)造函數(shù),而要使用WebRequest.Create方法初始化一個(gè)HttpWebRequest實(shí)例,如:

  1. HttpWebRequest hwr=(HttpWebRequest)WebRequest.Create(http://www.163.com/);  

創(chuàng)建了這個(gè)對(duì)象后,就可以通過HttpWebRequest屬性,設(shè)置很多HTTP標(biāo)頭字段的內(nèi)容,如hwr.AddRange(100,1000);設(shè)置接收對(duì)象的范圍為100-1000字節(jié)。

HttpWebReques對(duì)象使用GetResponse()方法時(shí),會(huì)返回一個(gè)HttpWebResponse對(duì)象,為提出HTTP返回報(bào)文信息,需要使用HttpWebResponse的GetResponseStream()方法,該方法返回一個(gè)Stream對(duì)象,可以讀取HTTP返回的報(bào)文,如:首先定義一個(gè)Strean 對(duì)象 public System.IO.Stream ns; 然后 ns=hwr.GetResponse ().GetResponseStream ();即可創(chuàng)建Stream對(duì)象。有了以上的準(zhǔn)備知識(shí)后下面開始設(shè)計(jì)我們的多線程互聯(lián)網(wǎng)文件的下載程序,首先打開Visual Studio.Net集成開發(fā)環(huán)境,選擇“文件”、“新建”、“項(xiàng)目”,然后選擇“Visual C#項(xiàng)目”,在向?qū)в疫吜斜砜蛑羞x中“Windows應(yīng)用程序”,輸入項(xiàng)目名稱,如本例為:httpftp,然后選擇“確定”按鈕,向?qū)ё詣?dòng)生成了一個(gè)Windows應(yīng)用程序項(xiàng)目。首先打開窗口設(shè)計(jì)器設(shè)計(jì)應(yīng)用程序窗口,增加如下控件:

一個(gè)列表框 listBox1 三個(gè)文本標(biāo)簽 label1-label3 三個(gè)文本框 textBox1-textBox3 一個(gè)開始接收按鈕 button1 設(shè)計(jì)好的窗口如下圖:

C# HTTP文件傳輸設(shè)計(jì)好的窗口 

C# HTTP文件傳輸之控件定義代碼是:

  1. public System.Windows.Forms.ListBox listBox1;  
  2. private System.Windows.Forms.Label label1;  
  3. private System.Windows.Forms.TextBox textBox1  
  4. private System.Windows.Forms.Button button1;  
  5. private System.Windows.Forms.Label label2;  
  6. private System.Windows.Forms.TextBox textBox2;  
  7. private System.Windows.Forms.Label label3;  
  8. private System.Windows.Forms.TextBox textBox3;  
  9. private System.Windows.Forms.Label label4;  
  10. private System.Windows.Forms.TextBox textBox4; 

打開Form1的代碼編輯器,增加如下的命名空間:

  1. using System.Net;//網(wǎng)絡(luò)功能   
  2. using System.IO;//流支持  
  3. using System.Threading ;//線程支持 

增加如下的程序變量:

  1. public bool[] threadw; //每個(gè)線程結(jié)束標(biāo)志  
  2. public string[] filenamew;//每個(gè)線程接收文件的文件名  
  3. public int[] filestartw;//每個(gè)線程接收文件的起始位置  
  4. public int[] filesizew;//每個(gè)線程接收文件的大小  
  5. public string strurl;//接受文件的URL  
  6. public bool hb;//文件合并標(biāo)志  
  7. public int thread;//進(jìn)程數(shù)  

C# HTTP文件傳輸?shù)膶?shí)現(xiàn)基本內(nèi)容就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C# HTTP文件傳輸有所幫助。

【編輯推薦】

  1. C#透明窗體代碼詳解
  2. C#透明窗體及按鈕的效果淺析
  3. 淺析C# Dispose方法的實(shí)現(xiàn)
  4. 淺析C# Dispose方法模式的建立
  5. C# http分析常用工具淺析
責(zé)任編輯:仲衡 來源: builder.com.cn
相關(guān)推薦

2009-08-26 14:35:00

用C#實(shí)現(xiàn)HTTP協(xié)議

2011-05-19 11:20:08

2020-11-13 08:30:57

Socket

2019-08-30 13:25:09

WinSCPWindowsLinux

2012-03-19 10:35:51

ibmdw

2021-02-25 15:09:24

微信文件傳輸助手錄音

2010-12-08 12:34:46

文件傳輸

2010-07-01 15:55:54

FTP文件傳輸協(xié)議

2017-02-27 20:24:27

Linux文件傳輸命令

2010-06-28 14:25:16

2013-11-19 20:07:18

遠(yuǎn)程桌面文件文件傳輸

2010-06-09 15:40:01

FTP文件傳輸協(xié)議

2010-11-09 17:28:27

嗅探嗅探網(wǎng)絡(luò)TFTP

2013-06-10 16:28:23

2012-11-15 09:18:47

MFT云環(huán)境文件傳輸系統(tǒng)

2021-06-07 00:03:31

HTTP大文件方案

2024-11-28 14:12:58

2014-09-17 09:24:30

2013-05-29 09:59:20

Java-RMI遠(yuǎn)程調(diào)用

2023-06-06 08:57:27

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 中文字幕一区二区三区精彩视频 | 精品欧美一区二区在线观看视频 | 毛片黄片免费看 | 91精品国产91久久久久久最新 | 午夜欧美a级理论片915影院 | 欧美一级观看 | 欧美日韩国产一区二区三区不卡 | 亚洲精品视频在线看 | 欧美激情免费在线 | 欧美一区在线视频 | h视频在线观看免费 | 国产高清视频在线 | 美女福利视频网站 | 日韩国产在线 | 日韩中文字幕一区二区 | 在线亚洲人成电影网站色www | 国产婷婷精品 | 新疆少妇videos高潮 | 国产精品国色综合久久 | 久久久久精 | 狠狠爱免费视频 | 91精品久久 | 欧美成年人 | 日韩视频中文字幕 | 亚洲精品女优 | 精品久久久一区 | 亚洲高清在线观看 | 四虎海外 | 国产精品久久国产愉拍 | 国产精品久久久久久久三级 | 九九在线精品视频 | 亚洲国产欧美日韩 | 日韩一区二区三区四区五区 | 黄色大片观看 | 国产精品视频久久 | 玖玖爱365 | 欧美一区二区三区在线观看 | 日韩免费视频一区二区 | 九九热精品在线视频 | 欧美日韩高清一区 | 在线一区 |