知识大全 用.net和协议快速开发下载软件

Posted 文件

篇首语:历览千载书,时时见遗烈。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用.net和协议快速开发下载软件相关的知识,希望对你有一定的参考价值。

  在互连网广泛应用的今天 将有用的信息下载到本地是一件很普遍的事 当然 这个过程我们可以通过许多下载工具实现 目前的这些下载工具 绝大多数都是使用协议完成的 虽然使用编写下载工具是一种很简单的方法 但美中不足的是开发人员必须要结合winsock并编写大量的代码才可以完成 因为是一个工业标准 你不可以自定义这个标准 唯一的办法只有服从 而且由于用到winsock技术 所以对开发人员的要求也很高     以前我曾经用vb 编写了一个下载程序 在程序中使用了vb 中提供的winsock activeX控件和协议来实现最简单的下载功能 这个程序的长度有 行     今天当我翻框架时 我兴奋了 应为要编写一个下载软件比以前方便 快捷了 于是我忍不住希望有人和我分享这种愉悦的心情 我真的是叫好 他能使你从乏味的工作中解脱出来!    下面就让我们一下这种技术为什么如此让人兴奋     中编写快速简单的下载和上传的代码只要调用WebClient类就可以了 对于简单请求和响应事务 WebClient类提供将数据上载到Internet服务器或从Internet服务器下载数据的最简便的方法 WebClient提供上载和下载文件 发送和接收流以及将数据缓冲区发送到服务器并接收响应的方法 这样 事情就简单多了     了解了这个技术后 我们就可以编写下载和上传的程序了     先添加timer textbox button savefiledialog和 个label控件 savefiledialog用来保存下载的文件 timen用来和一个label控件结合 显示已经下载了多少 Textbox用来接受输入的url地址 将timer 的属性interval定为 即每一秒启动一次Timer _Tick事件 将label text定为 \\\\      代码如下   Imports System Net 到入命名空间  Public Class Form   Inherits System Windows Forms Form  Public Shared fpath As String  Dim fsize As Long  Private Sub Button _Click(ByVal sender As System Object ByVal e As  System EventArgs) Handles Button Click  Dim urld As String  Dim i As Integer  Dim dfile As New WebClient() 实例化WebClient类  SaveFileDialog ShowDialog()  fpath = SaveFileDialog FileName  Label Text = 文件保存在 &# ; fpath  urld = Label Text + TextBox Text  Timer Enabled = True  dfile DownloadFile(urld fpath) 下载指定nrl地址的文件  Timer Enabled = False  End Sub  Private Sub Timer _Tick(ByVal sender As Object   ByVal e As System EventArgs) Handles Timer Tick  Me Refresh() 用来刷新窗口  Dim th As New th ()  Dim tt As New System Threading Thread(AddressOf th timeth) 实例化线程类  tt Start() 启动线程  Label Text = th downk 显示下载文件的大小   进行计算下载速度  Static k As Integer  Dim p downspeed  p = k  k = p +   p = k  Dim fileinfo As New System IO FileInfo(form fpath)  downspeed = fileinfo Length()  downspeed= downspeed/p  label textbox= 当前下载速度是 &# ; downspeed &# ; k/m   End Sub  End Class  Public Class th   Public Shared downk As String  Dim form As New Form ()  Dim fileinfo As New System IO FileInfo(form fpath)  Dim fsize As Long  Public Sub timeth()  If fileinfo Exists = True Then  fsize = fileinfo Length()  downk = 以下载文件 &# ; fsize &# ; k   End If  End Sub  End Class    你看懂上面的代码了吗?别急 让我来解释一下     ● 第一个要解释的是线程 简单的说就是在exe文件运行的时候计算机会为他创建一个进程 将这个进程分成若个块 每块完成不同的任务 这些块就是线程(更多的知识请见相关照料) 那为什么我会在Timer _Tick事件(每过一段时间就执行其中的代码)中使用线程尼?因为我发现在调试的时候WebClient类占有的资源校大(这可能是net自己的原因) 在运行时使整个窗口的显示不完整 使用了线程和Me Refresh()语句后情况有所好转(在net中要创建线程的方法见msdn)     ● 另一个要解释的是System IO框架中的FileInfo类 我用他来读已经下载的文件大小 在程序中我没有获取要下载文件的大小 换句话说就是只有等下载完成后才可以知道文件到底用多大 这时您或许要问 难道net中没提供相关的类吗?我花了 个小时 将net中的所有类打开 一一查看 终于找了到相关的类 这两个类就是WebRequest和WebResponse(这两个类的使用见msdn) 即它们的子代类因为这两个类的使用比WebClient复杂(如果你要写更复杂的下载程序就要使用它们)但是如果你要获得服务器上你要下载的文件的大小 你就必须使用它们 下面我就写一个简单的代码 来获得其服务器上你要下载的文件的大小     Private Sub Form _Click(ByVal sender As Object   ByVal e As System EventArgs) Handles MyBase Click  Dim th As WebRequest =  WebRequest Create( ( ) exe )   这个站是超星的网站 SSR b B( ) exe文件是超星图书阅读器  Dim w As WebResponse = th GetResponse()  Dim j As Long  j = w ContentLength() ToString 获得文件大小  Debug WriteLine(j)  End Sub    ● 对于无法获得的下载速度 我们可以通过计算来获得 计算的思路是 通过定义一个静态变量 使他每一秒加一 就可以知道下载了多少秒 在从downspeed = fileinfo Length()语句得到下载的这段时间文件的大小 用downspeed除以秒就可以得到当前的下载速度了 请注意这只是一个估略的值 如果你想每隔n秒才计算的话 设置p=k* timer interval/     ● 最后要说的是 你还可以调用wininte dll这个动态库中的函数 这个库是专为编写网络程序提供的 使用它你也可以编写下载和上传的程序 当然你也可以使用来写     在结束前向大家推荐一本用vb和协议开发的书 《visual basic 网络高级编程》是人民邮电出版社出的 isbn号是 /tp 元汪晓平 钟军写的 这本书详细讲了用vb和 ftp smtp nntp telnt协议开发网络程序的知识     看了以上的代码你是否觉得编写下载软件以不是什么高手才可以完成的任务了吧!那就动手吧! cha138/Article/program/Java/hx/201311/25638

相关参考

知识大全 另类的ASP.NET快速开发架构体系

另类的ASP.NET快速开发架构体系  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JVPL和m

知识大全 分享.NET开发中经常用到的十大软件

分享.NET开发中经常用到的十大软件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  从事NET开

知识大全 .Net开发人员应该下载的十种必备工具

.Net开发人员应该下载的十种必备工具  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ·用于编写

知识大全 软件开发的“简单”艺术—有感于VS.net

软件开发的“简单”艺术—有感于VS.net  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  前不久

知识大全 推荐php开发利器 快速创建web应用

  近日美国“开源软件”项目Openbiz新发布了一款名为OpenbizCubiDev的PHP的应用开发利器宣称可以让开发人员在分钟内通过配置和向导完成创建一个功能完善的企业级应用程序这是空穴来风还是

知识大全 快速生成源程序 轻松入门.net

  《风越代码生成器[FireCodeCreator]》是一款基于多种数据库的程序代码生成软件可快速建立数据信息的添加编辑查看列表搜索功能默认提供aspaspxWEB程序net普通三层框架web程序n

知识大全 HTTP协议简介

ASP.NET开发宝典:HTTP协议简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &nbs

知识大全 开发设计模式——asp.net中实现观察者模式

   在中实现观察者模式?难道中的观察者模式有什么特别么?嗯基于Http协议的Application难免有些健忘我是这样实现的不知道有没有更好的办法?  先谈谈需求吧以免

知识大全 用JSTL实现JSP应用程序快速开发

用JSTL实现JSP应用程序快速开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在这篇文章中

知识大全 用.Net开发DB2应用程序比较

用.Net开发DB2应用程序比较  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  简介  在NET