Как работает recv?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
VictorVM
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 03.03.2006 (Пт) 6:37

Как работает recv?

Сообщение VictorVM » 20.04.2006 (Чт) 20:17

Кто нибудь пробовал передавать большие (1-3Мб) массивы при помощи функций send и recv?
Код: Выделить всё

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]

attackie
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 29.08.2003 (Пт) 7:01
Откуда: Владивосток

Сообщение attackie » 10.05.2006 (Ср) 9:50

Во-первых, перед

bytes = recv(aSocket, ArrInput(1), 16000, 0)

поставь DoEvents


не поможет - буду искать дальше (:
---
FreeBasic Russia - http://2088pm.com/fb/ - русский фэнклуб Фрибейсика


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 125

    TopList  
cron