大概代码: Private Sub WinsockClient_DataArrival(ByVal bytesTotal As Long) If boolReceiveFileFlag = True And bytesTotal <> 0 Then If lFileState < lCurrentlyFileLen Then Dim filea() As Byte WinsockClient.GetData filea Put #2, , filea ' fPos = fPos + UBound(filea) + 1 '写入文件的位置 lFileState = lFileState + UBound(filea) + 1 If lFileState >= lCurrentlyFileLen Then ' MsgBox ("接收成功") Close #2 WinsockUDP.SendData "|FILEE:|" Call AddToList(ListRealTime, "文件接收完:" & strCurrentlyFileName) Call ProBarGG(ProBarA, ((lFileCount) / lSendFileCount) * 100) If lFileCount = lSendFileCount Then Call AddToList(ListRealTime, "所有文件接收完") TestFileCRC32 '对每个文件进行CRC校验 End If
End If Call ProBarGG(ProBarS, (lFileState / lCurrentlyFileLen) * 100) End If End If End Sub
发送方自己控制 一般以8k为一单位'发送一次 Private Sub SendOneData(lOneDataLen As Long, lSendSate As Long, lFileLen As Long, sockServer As Winsock) If lOneDataLen + lSendSate >= lFileLen Then ReDim fileb(lFileLen - lSendSate - 1) Get #1, , fileb lSendSate = lFileLen sockServer.SendData fileb Else Get #1, , fileb lSendSate = lSendSate + lOneDataLen sockServer.SendData fileb End If End Sub
注明:要文件传送代码
Private Sub WinsockClient_DataArrival(ByVal bytesTotal As Long)
If boolReceiveFileFlag = True And bytesTotal <> 0 Then
If lFileState < lCurrentlyFileLen Then
Dim filea() As Byte
WinsockClient.GetData filea
Put #2, , filea
' fPos = fPos + UBound(filea) + 1 '写入文件的位置
lFileState = lFileState + UBound(filea) + 1
If lFileState >= lCurrentlyFileLen Then
' MsgBox ("接收成功")
Close #2
WinsockUDP.SendData "|FILEE:|"
Call AddToList(ListRealTime, "文件接收完:" & strCurrentlyFileName)
Call ProBarGG(ProBarA, ((lFileCount) / lSendFileCount) * 100)
If lFileCount = lSendFileCount Then
Call AddToList(ListRealTime, "所有文件接收完")
TestFileCRC32 '对每个文件进行CRC校验
End If
End If
Call ProBarGG(ProBarS, (lFileState / lCurrentlyFileLen) * 100)
End If
End If
End Sub
一般以8k为一单位'发送一次
Private Sub SendOneData(lOneDataLen As Long, lSendSate As Long, lFileLen As Long, sockServer As Winsock)
If lOneDataLen + lSendSate >= lFileLen Then
ReDim fileb(lFileLen - lSendSate - 1)
Get #1, , fileb
lSendSate = lFileLen
sockServer.SendData fileb
Else
Get #1, , fileb
lSendSate = lSendSate + lOneDataLen
sockServer.SendData fileb
End If
End Sub