⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 module1.vb

📁 编程环境VB.NET2005 多线程下载
💻 VB
字号:
Imports System.Security.Cryptography
Imports System.Text
Public Module Module1
    Structure MyThreadStru
        Public filename As String
        Public startPos As Long
        Public endPos As Long
        Public nowPos As Long
        Public url As String
        Public speed As Long
    End Structure
    'Structure MyDownTaskStru
    Public Class MyDownTaskClass
        Public md5 As String
        Public status As Integer
        Public savePathfilename As String
        Public downUrl As String
        Public refUrl As String
        'Dim md5, status, filename, url, refurl, length, complete, tcount, thDataStr, note As String
        Public Length As String
        Public Complete As String
        Public downThreadAmount As Integer
        Public thData() As Byte
        Public notetxt As String
        Public time As Integer
    End Class
    '    End Structure
    Public Function BinToStr(ByVal inBytes() As Byte) As String
        Dim sb As New System.Text.StringBuilder
        Dim u As New System.Text.UnicodeEncoding
        Dim cc() As Char = u.GetChars(inBytes)
        For Each c As Char In cc
            sb.Append(c.ToString)
        Next
        Return sb.ToString
    End Function
    Function getMd5Hash(ByVal input As String) As String
        Dim md5Hasher As MD5 = md5.Create()
        Dim data As Byte() = md5Hasher.ComputeHash(Encoding.Unicode.GetBytes(input))
        Dim sb As New StringBuilder()
        For i As Integer = 0 To data.Length - 1
            sb.Append(data(i).ToString("x2"))
        Next i
        Return sb.ToString()
    End Function
    '        Dim md5 As String = getMd5Hash(filename)
    Function MapToDownloadTask123456(ByVal md5 As String) As MyDownloadTask
        Using conn As New Data.OleDb.OleDbConnection(connStr)
            Dim com As New Data.OleDb.OleDbCommand("", conn)
            com.Parameters.AddWithValue("@md5", md5)
            com.CommandText = "SELECT * FROM 下载数据 WHERE md5=@md5"
            conn.Open()
            Dim dr As OleDb.OleDbDataReader = com.ExecuteReader
            Dim nt As MyThreadStru
            If dr.HasRows = False Then Return Nothing

            Dim tempss As String = String.Empty
            While dr.Read()
                nt.filename = dr.Item("Filename").ToString()
                nt.url = dr.Item("URL").ToString
                tempss = dr.Item("Thread").ToString & dr.Item("Thread2").ToString
            End While
            Dim mmm As RegularExpressions.MatchCollection = RegularExpressions.Regex.Matches(tempss, "#\d+:\d+:\d+")
            For Each mm As System.Text.RegularExpressions.Match In mmm
                Dim mc As RegularExpressions.MatchCollection = RegularExpressions.Regex.Matches(mm.ToString, "(?<s>\d+):(?<n>\d+):(?<e>\d+)")
                For Each m As System.Text.RegularExpressions.Match In mc
                    nt.startPos = CLng(m.Groups("s").ToString)
                    nt.nowPos = CLng(m.Groups("n").ToString)
                    nt.endPos = CLng(m.Groups("e").ToString)
                    'Dim downFile As New MyDownThread(nt)
                    'AddHandler downFile.thDone, AddressOf Me.chedkdone
                    'AddHandler downFile.thStop, AddressOf Me.thStop
                    'Me.thColl.Add(downFile)
                Next
            Next
            com.Dispose()
        End Using
    End Function
    Sub BindThreadToDownTask(ByVal sender As MyDownloadTask, ByVal thdatastr As String, ByVal filename As String, ByVal url As String)
        Dim mmm As RegularExpressions.MatchCollection = RegularExpressions.Regex.Matches(thdatastr, "#\d+:\d+:\d+")
        For Each mm As System.Text.RegularExpressions.Match In mmm
            Dim mc As RegularExpressions.MatchCollection = RegularExpressions.Regex.Matches(mm.ToString, "(?<s>\d+):(?<n>\d+):(?<e>\d+)")
            For Each m As System.Text.RegularExpressions.Match In mc
                Dim ts As New MyThreadStru
                ts.filename = filename
                ts.url = url
                ts.startPos = CLng(m.Groups("s").ToString)
                ts.nowPos = CLng(m.Groups("n").ToString) + 0 'no index to restore pos
                ts.endPos = CLng(m.Groups("e").ToString)
                Dim downFile As New MyDownThread(ts)
                AddHandler downFile.thStop, AddressOf sender.thStop ' Me.thStop
                sender.thColl.Add(downFile)
            Next
        Next
    End Sub

End Module

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -