我使用 winsock 做了个下载模块.
现在问题是收到数据后如何保存问题.
如 : 我下载是个wmv格式文件.好象开头有个头文件(因为我下载txt文件时多了部分信息)
我现在该如何去掉那部分头信息...

解决方案 »

  1.   

    Private Sub Winsck_DataArrival(ByVal bytesTotal As Long)    SaveFileName = "D:\heyang\vb\winsock\index.asp"
        
        DoEvents
        
        Dim ByteData As String
        
        Winsck.GetData ByteData, vbByte                                    '接收的数据放入数组
        
        ReceiveData = StrConv(ByteData, vbUnicode)                         '数据编码转换
        
        Label2.Caption = ReceiveData
        
        '计算文件长度,设置进度条
        If InStr(1, ReceiveData, "Content-Length:") > 0 And FileSize = 0 Then '仅第一次计算,FileSize=0
        
            Dim pos1 As Long, pos2 As Long
            
            pos1 = InStr(1, ReceiveData, "Content-Length:")
            
            pos2 = InStr(pos1 + 16, ReceiveData, vbCrLf)
            
            If pos2 > pos1 Then
            
                FileSizeByte = Mid(ReceiveData, pos1 + 16, pos2 - pos1 - 16) '计算文件的长度
                
                StartTime = Timer()                                          '保存开始下载的时间
                
                ProgssBar.Max = FileSizeByte                                 '设置进度条
                
                FileSize = FormatNumber(FileSizeByte / 1024, 2)              '以KB表示
                
                Label1.Caption = "本次下载的文件共" + CStr(FileSize) + "KB..."
                
            End If
            
        End If
        
            
        labDownloadSpeed.Caption = CStr(dblDownloadSpeed) + " kb/s"
        labDownloadSpeed.Refresh
        ProgssBar.Value = FileSizeHaveDown
        
        '写数据
        Fnum = FreeFile()
        Open SaveFileName For Binary Lock Write As #Fnum
        If LOF(Fnum) > 0 Then
            Seek #Fnum, LOF(Fnum) + 1
        End If
        If StartPos > 0 Then
            For i = StartPos To Len(ByteData)
                Put #Fnum, , ByteData
            Next i
        Else
            Put #Fnum, , ByteData
        End If
        Close #Fnum
        ByteData = ""
        'If Err Then
        '    lblProcessResult.Caption = lblProcessResult.Caption & vbCrLf & "获取数据出错:" & Err.Description
        '    lblProcessResult.Refresh
        'End If
    End Sub