C#HTTP文件传输的实现浅析

开发 后端
C#HTTP文件传输的实现是如何办到的呢?C#HTTP文件传输主要使用到的类是什么呢?C#HTTP文件传输的具体步骤是什么呢?那么本文就向你详细介绍具体的实现方法和相关的概念。

C# HTTP文件传输是什么呢?其实很多人都有过使用网络蚂蚁或网络快车软件下载互联网文件的经历,这些软件的使用可以大大加速互联网上文件的传输速度,减少文件传输的时间。这些软件为什么有如此大的魔力呢?其主要原因是这些软件都采用了多线程下载和断点续传技术。如果我们自己来编写一个类似这样的程序,也能够快速的在互联网上下载文件,那一定是非常愉快的事情。下面我就讲一讲如何实现C# HTTP文件传输的程序,你会看到利用C#语言编写网络应程序是多么的容易,从中也能体会到C#语言中强大的网络功能。

C# HTTP文件传输我们要明白什么是HTTP协议

HTTP亦即Hpyer Text Transfer Protocal的缩写,它是现代互联网上最重要的一种网络协议,超文本传输协议位于TCP/IP协议的应用层,是一个面向无连接、简单、快速的C/S结构的协议。HTTP的工作过程大体上分连接、请求、响应和断开连接四个步骤。C#语言对HTTP协议提供了良好的支持,在.NET类库中提供了WebRequest和WebResponse类,这两个类都包含在System.Net命名空间中,利用这两个类可以实现很多高级的网络功能,本文中多线程文件下载就是利用这两个类实现的。 WebRequest和WebResponse都是抽象基类,因此在程序中不能直接作为对象使用,必须被继承,实际使用中,可根据URI参数中的URI前缀选用它们合适的子类,对于HTTP这类URI,HttpWebRequest和HttpWebResponse类可以用于处理客户程序同WEB服务器之间的HTTP通讯。

C# HTTP文件传输中HttpWebRequest类

它实现了很多通过HTTP访问WEB服务器上文件的高级功能。HttpWebRequest类对WebRequest中定义的属性和方法提供支持,HttpWebRequest将发送到Internet资源的公共HTTP标头的值公开为属性,由方法或系统设置,常用的由属性或方法设置的HTTP标头为:接受, 由Accept属性设置, 连接, 由Connection属性和KeepAlive属性设置, Content-Length, 由ContentLength属性设置, Content-Type, 由ContentType属性设置, 范围, 由AddRange方法设置. 实际使用中是将标头信息正确设置后,传递到WEB服务器,WEB服务器根据要求作出回应。

C# HTTP文件传输之HttpWebResponse类

它继承自WebResponse类,专门处理从WEB服务器返回的HTTP响应,这个类实现了很多方法,具有很多属性,可以全面处理接收到的互联网信息。在HttpWebResponse类中,对于大多数通用的HTTP标头字段,都有独立的属性与其对应,程序员可以通过这些属性方便的访问位于HTTP接收报文标头字段中的信息,本例中用到的HttpWebResponse类属性为:ContentLength 既接收内容的长度。

有了以上的了解后,下面看看这两个类的用法,要创建HttpWebRequest对象,不要直接使用HttpWebRequest的构造函数,而要使用WebRequest.Create方法初始化一个HttpWebRequest实例,如:

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

创建了这个对象后,就可以通过HttpWebRequest属性,设置很多HTTP标头字段的内容,如hwr.AddRange(100,1000);设置接收对象的范围为100-1000字节。

HttpWebReques对象使用GetResponse()方法时,会返回一个HttpWebResponse对象,为提出HTTP返回报文信息,需要使用HttpWebResponse的GetResponseStream()方法,该方法返回一个Stream对象,可以读取HTTP返回的报文,如:首先定义一个Strean 对象 public System.IO.Stream ns; 然后 ns=hwr.GetResponse ().GetResponseStream ();即可创建Stream对象。有了以上的准备知识后下面开始设计我们的多线程互联网文件的下载程序,首先打开Visual Studio.Net集成开发环境,选择“文件”、“新建”、“项目”,然后选择“Visual C#项目”,在向导右边列表框中选中“Windows应用程序”,输入项目名称,如本例为:httpftp,然后选择“确定”按钮,向导自动生成了一个Windows应用程序项目。首先打开窗口设计器设计应用程序窗口,增加如下控件:

一个列表框 listBox1 三个文本标签 label1-label3 三个文本框 textBox1-textBox3 一个开始接收按钮 button1 设计好的窗口如下图:

C# HTTP文件传输设计好的窗口 

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;//网络功能   
  2. using System.IO;//流支持  
  3. using System.Threading ;//线程支持 

增加如下的程序变量:

  1. public bool[] threadw; //每个线程结束标志  
  2. public string[] filenamew;//每个线程接收文件的文件名  
  3. public int[] filestartw;//每个线程接收文件的起始位置  
  4. public int[] filesizew;//每个线程接收文件的大小  
  5. public string strurl;//接受文件的URL  
  6. public bool hb;//文件合并标志  
  7. public int thread;//进程数  

C# HTTP文件传输的实现基本内容就向你介绍到这里,希望对你了解和学习C# HTTP文件传输有所帮助。

【编辑推荐】

  1. C#透明窗体代码详解
  2. C#透明窗体及按钮的效果浅析
  3. 浅析C# Dispose方法的实现
  4. 浅析C# Dispose方法模式的建立
  5. C# http分析常用工具浅析
责任编辑:仲衡 来源: builder.com.cn
相关推荐

2009-08-26 14:35:00

用C#实现HTTP协议

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

2010-12-08 12:34:46

文件传输

2021-02-25 15:09:24

微信文件传输助手录音

2010-07-01 15:55:54

FTP文件传输协议

2017-02-27 20:24:27

Linux文件传输命令

2010-06-28 14:25:16

2010-06-09 15:40:01

FTP文件传输协议

2013-11-19 20:07:18

远程桌面文件文件传输

2010-11-09 17:28:27

嗅探嗅探网络TFTP

2013-06-10 16:28:23

2012-11-15 09:18:47

MFT云环境文件传输系统

2021-06-07 00:03:31

HTTP大文件方案

2014-09-17 09:24:30

2013-05-29 09:59:20

Java-RMI远程调用

2011-03-04 11:23:55

FileZilla

2023-06-06 08:57:27

点赞
收藏

51CTO技术栈公众号