1,502
社区成员
发帖
与我相关
我的任务
分享
If m_lFileSize <= TRUNK_MAX_SIZE Then '如果要发送的文件小于数据块大小,直接发送
ReDim bData(1 To m_lFileSize) '根据文件长度重新定义数组大小
Get #nFileNum, , bData '读取数据
Close #nFileNum '关闭文件
wskData.SendData bData: DoEvents '发送数据
GoTo SendFinished
End If
'文件大于数据块大小,进行分块发送,直到剩余<=TRUNK_MAX_SIZE的最后一块
Do Until (m_iPos >= (m_lFileSize - TRUNK_MAX_SIZE)) '发送整块数据的循环
ReDim bData(1 To TRUNK_MAX_SIZE) '定义数组用于存放数据
Get #nFileNum, m_iPos + 1, bData '读取数据
wskData.SendData bData: DoEvents '发送数据
'RaiseEvent SendedSizeChanged(m_iPos) '触发SendedSizeChanged事件
m_iPos = m_iPos + TRUNK_MAX_SIZE '移动iPos,使它指向下次要读的数据
Loop
'发送最后一块
ReDim bData(1 To m_lFileSize - m_iPos) '定义数组
Get #nFileNum, m_iPos + 1, bData '读取数据
wskData.SendData bData: DoEvents '发送数据
Private Sub wskData_DataArrival(ByVal bytesTotal As Long)
Dim bData() As Byte
Dim nFileNum
nFileNum = FreeFile
Open m_sLocalFile For Binary As #nFileNum '打开文件准备写入数据
m_lReceivedSize = LOF(nFileNum) '获取已保存文件大小
RaiseEvent ReceivedSizeChanged(m_lReceivedSize + bytesTotal) '触发ReceivedSizeChanged事件
ReDim bytData(1 To bytesTotal)
wskData.GetData bData '获取数据
Put #nFileNum, m_lReceivedSize + 1, bData
Close #nFileNum '每次写入后都关闭文件
If m_lReceivedSize + bytesTotal = m_lFileSize Then '如果当前文件已接收完成
m_bReceivedOK = True
End If
End Sub