梦幻西游熟练度影响:用.net快速开发下载软件(Use. Net download software to q...

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 11:35:33

用.net快速开发下载软件 [ English ]

2008-2-24 1:52:08 中国学网 跟贴 0 条 网友投稿

 


  在互连网广泛应用的今天,将有用的信息下载到本地是一件很普遍的事。当然,这个过程我们可以通过许多下载工具实现。目前的这些下载工具,绝大多数都是使用http协议完成的。虽然使用http编写下载工具是一种很简单的方法,但美中不足的是开发人员必须要结合winsock并编写大量的代码才可以完成。因为http是一个工业标准,你不可以自定义这个标准,唯一的办法只有服从。而且由于用到winsock技术,所以对开发人员的要求也很高。

  以前我曾经用vb6编写了一个下载程序,在程序中使用了vb6中提供的winsock activeX控件和http协议来实现最简单的下载功能。这个程序的长度有200行。

  今天当我翻开.net框架时,我兴奋了,应为要编写一个下载软件比以前方便、快捷了,于是我忍不住希望有人和我分享这种愉悦的心情。我真的是为.net叫好,他能使你从乏味的工作中解脱出来!

  下面就让我们一下这种技术为什么如此让人兴奋。

  在.net中编写快速简单的下载和上传的代码只要调用WebClient类就可以了。对于简单请求和响应事务,WebClient类提供将数据上载到Internet服务器或从Internet服务器下载数据的最简便的方法。WebClient提供上载和下载文件、发送和接收流以及将数据缓冲区发送到服务器并接收响应的方法。这样,事情就简单多了。

  了解了这个技术后,我们就可以编写下载和上传的程序了。

  先添加timer,textbox,button,savefiledialog和4个label控件,savefiledialog用来保存下载的文件,timen用来和一个label控件结合,显示已经下载了多少。Textbox用来接受输入的url地址。将timer1的属性interval定为1000,即每一秒启动一次Timer1_Tick事件。将label1.text定为http://。

  代码如下:   

  Imports System.Net'到入命名空间

  Public Class Form1

  Inherits System.Windows.Forms.Form

  Public Shared fpath As String

  Dim fsize As Long

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

  System.EventArgs) Handles Button1.Click

  Dim urld As String

  Dim i As Integer

  Dim dfile As New WebClient()'实例化WebClient类

  SaveFileDialog1.ShowDialog()

  fpath = SaveFileDialog1.FileName

  Label3.Text = "文件保存在" & fpath

  urld = Label1.Text + TextBox1.Text

  Timer1.Enabled = True

  dfile.DownloadFile(urld, fpath)'下载指定nrl地址的文件

  Timer1.Enabled = False

  End Sub

  Private Sub Timer1_Tick(ByVal sender As Object,

  ByVal e As System.EventArgs) Handles Timer1.Tick

  Me.Refresh()'用来刷新窗口

  Dim th2 As New th1()

  Dim tt As New System.Threading.Thread(AddressOf th2.timeth) 实例化线程类

  tt.Start()'启动线程

  Label2.Text = th2.downk'显示下载文件的大小

  '进行计算下载速度

  Static k As Integer

  Dim p,downspeed

  p = k

  k = p + 1

  p = k

  Dim fileinfo As New System.IO.FileInfo(form.fpath)

  downspeed = fileinfo.Length()

  downspeed= downspeed/p

  label4.textbox= "当前下载速度是"& downspeed & "k/m"

  End Sub

  End Class

  Public Class th1

  Public Shared downk As String

  Dim form As New Form1()

  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 转帖于 Xue163.com_VB.NET