Public Type FileInfo
FPath As String
FName As String
FSize As Long
End Type
Public EcgFile As FileInfo
Public Sentbyt As Long
Public Complete, FOK As Boolean
Public FileNum As Long
Public ByteSec As Long, Speed As Long
Public Receivedbyt As Long
窗口(接收)
Private Sub wsk_DataArrival(ByVal bytesTotal As Long)
Dim str1 As String
wsk.GetData str1, vbString
If FileNum = 0 Then
FileNum = FreeFile
On Error Resume Next
If FileLen(EcgFile.FName) > 0 Then Kill EcgFile.FName
Open EcgFile.FName For Binary As #FileNum
End If
Dim GotDat() As Byte
ByteSec = ByteSec + bytesTotal
Receivedbyt = Receivedbyt + bytesTotal
ReDim GotDat(0 To bytesTotal - 1)
wsk.GetData GotDat, vbArray + vbByte
Put #FileNum, , GotDat
If Receivedbyt >= EcgFile.FSize Then
Close #FileNum
Complete = True
If chkClose.Value = Checked Then
wsk.Close
Unload Me
End If
End If
end sub
'发送
Private Sub wsSend_SendComplete()
DoEvents
If FileNum > 0 Then
If Complete = False Then
SendChunk
Else
If chkClose.Value = Checked Then
wsSend.Close
Unload Me
End If
End If
End If
End Sub
Public Function SendChunk()
Dim ChunkSize As Long
Dim Chunk() As Byte
If wsSend.State <> sckConnected Then Exit Function
ChunkSize = 4000
If FileNum = 0 Then '
FileNum = FreeFile
Open EcgFile.FName For Binary As #FileNum
End If
If (LOF(FileNum) - Loc(FileNum)) < 4000 Then _
ChunkSize = (LOF(FileNum) - Loc(FileNum))
ReDim Chunk(0 To ChunkSize - 1)
Get #FileNum, , Chunk
wsSend.SendData Chunk
Sentbyt = Sentbyt + ChunkSize
ByteSec = ByteSec + ChunkSize
If Sentbyt = EcgFile.FSize Then
Complete = True
Close #FileNum
End If
End Function