7,785
社区成员




Dim exe() As Byte
Open "d:\1.exe" For Binary As #1
ReDim exe(LOF(1)) As Byte
Get #1, , exe
Close #1
Winsock2.SendData exe
Dim bxb() As Byte
Winsock1.GetData bxb
Open "d:\2.exe" For Binary As #2
Put #2, , bxb
Close #2
Text2.Text = bxb
Open "d:\1.exe" For Binary As #1
ReDim exe(LOF(1)) As Byte
Get #1, , exe
Close #1
'读出数据后不要急于发送,在结尾添加一个标志,供客户端判断是否完整的接收到了数据。比如:
Dim arrLength As Long
arrLength = UBound(exe)
'添加结束标志
dim FinisData() as byte
FinisData = "`!"
ReDim Preserve arrData(arrLength + 4)
CopyMemory exe(arrLength + 1), FinisData(0), 4
'向客户端发送数据
Winsock1(Index).SendData exe
DoEvents
'接收端
Dim bxb() As Byte
Dim Finis As String, FinisData(3) As Byte '结尾标志
Static mData() As Byte '完整的数据
Static mLength As Long
Static iCount As Integer
'接收数据
Winsock1.GetData bxb
'保存分包收到的数据
If iCount = 0 Then '第一次接收
mData = bxb
iCount = 1
Else
ReDim Preserve mData(mLength + bytesTotal)
CopyMemory mData(mLength + 1), bxb(0), bytesTotal
End If
mLength = UBound(mData)
'判断结尾(结尾4个字节)
CopyMemory FinisData(0), mData(mLength - 3), 4
Finis = FinisData
If Finis = "`!" Then
'如果是结尾,截断结尾标志数据
ReDim Preserve mData(mLength - 4)
'写入文件
Open "d:\2.exe" For Binary As #2
Put #2, , mData
Close #2
Erase mData
iCount = 0
mLength = 0
MsgBox "OK"
End If
Open "d:\1.exe" For Binary As #1
ReDim exe(LOF(1)) As Byte
Get #1, , exe
Close #1
Open "d:\1.exe" For Binary As #1
ReDim exe(LOF(1)) As Byte
Get #1, , exe
Close #1
for a=0 to ubound(exe)-1
Winsock2.SendData exe
doevents
next
Dim bxb() As Byte
Winsock1.GetData bxb
Open "d:\2.exe" For Binary As #2
Put #2, , bxb
Close #2
Text2.Text = bxb