断点续传

Imports System.IO
Imports System.Net

Public Class Form1

    
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        
Me.Button1.Text = "正在连接远程服务器"
        
Me.Button1.Refresh()

        
'If My.Computer.Network.Ping("192.168.3.33", 3000) = False Then
        '    Me.Button1.Text = "连接远程服务器失败!"
        '    Return
        'End If

        
Dim fileName As String = Nothing
        
Dim url As String = Nothing
        fileName 
= "d:\\mydownTest.exe"
        url 
= "http://localhost:2127/DownTest/Default.aspx?id=FJ2007.4.25.1"

        
'下载文件
        Dim startP As Decimal = 0
        
Dim fs As IO.FileStream = Nothing
        
If IO.File.Exists(fileName) Then
            fs 
= IO.File.OpenWrite(fileName)    '打开上次下载的文件
            startP = fs.Length
            fs.Seek(startP, SeekOrigin.Current) 
'移动文件流中的当前指针
        Else
            fs 
= New IO.FileStream(fileName, IO.FileMode.Create)    '新建下载文件
            startP = 0
        
End If

        
Try
            
Me.Button1.Text = "正在下载升级文件"
            
Me.Button1.Refresh()
            
Dim request As Net.HttpWebRequest = Net.HttpWebRequest.Create(url)  '向服务器请求,获得服务器回应数据流
            If startP > 0 Then
                request.AddRange(startP)    
'设置Range值
            End If

            
Dim ns As IO.Stream = request.GetResponse().GetResponseStream()
            
Dim byt(512As Byte
            
Dim readSize As Integer = 0
            readSize 
= ns.Read(byt, 0512)
            
While readSize > 0
                
'先检查磁盘剩余空间

                fs.Write(byt, 
0, readSize)
                readSize 
= ns.Read(byt, 0512)

            
End While
            ns.Close()

            
Me.Button1.Text = "下载完成"


        
Catch ex As Exception
            
Throw ex
        
Finally

            fs.Close()
            System.Diagnostics.Process.Start(fileName)
            
Me.Close()

        
End Try

    
End Sub

End Class

posted @ 2007-04-25 21:16  yongwnet  阅读(267)  评论(0编辑  收藏  举报