- Код: Выделить всё
Private Declare Function send Lib "ws2_32.dll" (ByVal S As Long, ByRef buf As Any, ByVal BufLen As Long, ByVal flags As Long) As Long
Private Declare Function recv Lib "ws2_32.dll" (ByVal S As Long, buf As Any, ByVal BufLen As Long, ByVal flags As Long) As Long
Пробую делать обработку в цикле:
- Код: Выделить всё
Do
bytes = recv(aSocket, ArrInput(1), 16000, 0)
ByteCount = ByteCount + bytes
If bytes > 0 Then
If Not (flFirstPack) Then
CopyMemory LenInputPaket, ArrInput(1), 4
LenInputPaket = LenInputPaket - 4
flFirstPack = True
ReDim Preserve GetingData(1 To ByteCount - 4)
CopyMemory GetingData(ByteCount - bytes + 1), ArrInput(5), bytes - 4
ByteCount = ByteCount - 4
Else
ReDim Preserve GetingData(1 To ByteCount)
CopyMemory GetingData(ByteCount - bytes + 1), ArrInput(1), bytes
End If
lTemp = LenInputPaket - ByteCount
Loop While lTemp > 0
If lTemp <= 0 Then
flFirstPack = False: ByteCount = 0: lTemp = 0
RaiseEvent DataArrival
End If
Почему-то цикл выполняется несколько раз, а после этого функция recv перестаёт принимать данные(возвращает 0).
Спасибо всем кто откликнется, Виктор.[/syntax]