我用winsock编传送文件的程序时,总是发现除了文本文件能成功传送外,其他文件格式传送均出现传送文件不全导致不能使用,且传送的这些坏文件又不能删除(重新启动后也不能删除),不知道为什么?
请问各位朋友 1,如何用winsock传送任何格式任何大小的文件,最好有源码
            2,如何删除顽固的文件
            在此谢谢了!

解决方案 »

  1.   

    你要用winscok发送任何格式和任何大小和文件就要做两个工作
    1.你要用二进制方式来接收 vbArray + vbByte,而不像发送文本文件那样用 vbString 
    2.大文件要分次发送,一次最大只能8000k
      

  2.   

    '接收端
    Option Explicit
    Dim k As Integer
    Dim sum As LongPrivate Sub Form_Load()
        sum = 1
    End Sub
        
    Private Sub udpPeerB_DataArrival(ByVal bytesTotal As Long)
        Dim strData() As Byte
        udpPeerB.GetData strData, vbByte
        Open App.Path & "\5.bmp" For Binary As #2
        k = UBound(strData) + 1
        Put #2, sum, strData
        sum = sum + k
        Close #2
    End Sub
    '发送端Option ExplicitPrivate Sub Command1_Click()
        Dim L As Long
        Dim i As Long
        Dim arr() As Byte
        Open App.Path & "\1.bmp" For Binary As #1
        L = LOF(1)
        ReDim arr(1 To 4096) As Byte
        For i = 0 To Int(L / 4096) - 1
            DoEvents
            Get #1, i * 4096 + 1, arr
            udpPeerA.SendData arr
        Next
        DoEvents
        If L Mod 4096 <> 0 Then
            Dim k As Integer
            k = L Mod 4096
            ReDim arr(1 To k)
            Get #1, L - k + 1, arr
            udpPeerA.SendData arr
        End If
        Close #1
    End Sub