http://dev.csdn.net/develop/article/47/47739.shtm 这里分的包 ========================================================================= '为了清晰,下面分别用两个子过程来完成计算这次还可以传多少个字节的数据和传送数据 '========================================================================== Private Function SplitFile() As Long '拆包 On Error Resume Next Dim GetCount As Long '计算出这次可发送的字节数 If LenFile >= 4000 Then GetCount = 4000 LenFile = LenFile - GetCount Else GetCount = LenFile LenFile = LenFile - GetCount End If SplitFile = GetCountEnd Function Private Sub TCPSendFile(objWinSock As Winsock, FileNumber As Integer, SendLen As Long) Dim FileByte() As Byte, i As Long, j As Long Dim temp As String ReDim Sendbaye(0)
Dim tempa As String * 4 ReDim FileByte(SendLen - 1) tempa = SendLen + 7 Sendbaye = tempa ' 把长度负值给包头 Get #FileNumber, , FileByte '读取文件 ReDim Preserve Sendbaye(SendLen + 7) '把包头+到文件头 For i = 0 To UBound(FileByte) Sendbaye(i + 7) = FileByte(i) Next frmmain.Winsock0.SendData Sendbaye End Sub
这里分的包
=========================================================================
'为了清晰,下面分别用两个子过程来完成计算这次还可以传多少个字节的数据和传送数据
'==========================================================================
Private Function SplitFile() As Long '拆包
On Error Resume Next
Dim GetCount As Long
'计算出这次可发送的字节数
If LenFile >= 4000 Then
GetCount = 4000
LenFile = LenFile - GetCount
Else
GetCount = LenFile
LenFile = LenFile - GetCount
End If
SplitFile = GetCountEnd Function
Private Sub TCPSendFile(objWinSock As Winsock, FileNumber As Integer, SendLen As Long)
Dim FileByte() As Byte, i As Long, j As Long
Dim temp As String
ReDim Sendbaye(0)
Dim tempa As String * 4
ReDim FileByte(SendLen - 1)
tempa = SendLen + 7
Sendbaye = tempa ' 把长度负值给包头
Get #FileNumber, , FileByte '读取文件
ReDim Preserve Sendbaye(SendLen + 7) '把包头+到文件头
For i = 0 To UBound(FileByte)
Sendbaye(i + 7) = FileByte(i)
Next
frmmain.Winsock0.SendData Sendbaye
End Sub