Страница: 1 | 2 |
Вопрос: Траблы с винсоком
Добавлено: 18.02.08 08:01
Автор вопроса: Hunter
У меня такая проблема - во первых:
При первом использовании сокетов вылазиет ошибка - ну да ладно - эт я пофиксил on error resume next ...
Во вторых - при передаче данных черех tcp иногда бывает вот такой еррор: "Out of disk space" ... или чтото типа в этом роде - как от ентого избавиЦЦа ??? Причем on error resume next или on error goto ... не помогает :(
вот код:
Dim StrData As String
Dim lNewValue As Long
Dim Info As String
Dim Glob_FileName As String
StrData = ""
TCP(Index).GetData StrData, vbString
Info = Left(StrData, 8)
If Info = "FILEINFO" Then
Glob_FileName = GetField(StrData, 3)
DownloadingFile = FreeFile
Open App.Path & "\" & Glob_FileName For Binary Access Write As #DownloadingFile
Exit Sub
End If
DoneBytes = DoneBytes + bytesTotal
Put #DownloadingFile, , StrData
On Error Resume Next
' вот тут вылетает ошибка - то есть при дебаге, 'выделяется DoEvents
DoEvents
End Sub
Ответы
Всего ответов: 28
Номер ответа: 1
Автор ответа:
Hunter
Вопросов: 23
Ответов: 71
Профиль | | #1
Добавлено: 18.02.08 08:03
Пардон, не "out of disk space", а "out of stack space" !!!
Номер ответа: 2
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #2
Добавлено: 18.02.08 11:07
Видать, места на диске нет Проверял?)
поставь On Error Resume Next на строчку выше.
Номер ответа: 3
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #3
Добавлено: 18.02.08 18:57
stack space... это не связано с местом на диске думаю..
У меня такое было когда куча всего в память загружалась (ошибка в разработке). если не путаю
Номер ответа: 4
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #4
Добавлено: 18.02.08 19:24
ой) не спалил это во втором посте) выход за пределы стека. видимо, много локальных переменных, вообще, вариантов много
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 18.02.08 23:46
А где закрытие файла?
Номер ответа: 6
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #6
Добавлено: 19.02.08 01:37
Я не понимаю.
Если Info = "FILEINFO" тогда открываем файл и выходим из процедуры (?!). Но если условие не выполняется, пишем StrData в #DownloadingFile. Вопрос: Где в таком случае открываем файл перед записью в него данных?
Номер ответа: 7
Автор ответа:
Hunter
Вопросов: 23
Ответов: 71
Профиль | | #7
Добавлено: 19.02.08 06:50
Если Info = "FILEINFO" тогда открываем файл и выходим из процедуры (?!). Но если условие не выполняется, пишем StrData в #DownloadingFile. Вопрос: Где в таком случае открываем файл перед записью в него данных?
Вообщем, так - первый пакет - он начинается с FILEINFO - несет в себе инфу о названии файла и его весе, то есть
в этом примере имя архива arj.rar, а размер 12345 ...
Close #DownloadingFile '# File Ready
TCP(Index).Close '# Close the winsock, for receiving next files?!
End Sub
p.s Может, кто-нить исправит этот код - я сам уже запутался ))))
Номер ответа: 8
Автор ответа:
Hunter
Вопросов: 23
Ответов: 71
Профиль | | #8
Добавлено: 19.02.08 06:59
Exit Sub лишнее - неправильно урезал код
Номер ответа: 9
Автор ответа:
Hunter
Вопросов: 23
Ответов: 71
Профиль | | #9
Добавлено: 19.02.08 07:01
поставь On Error Resume Next на строчку выше.
Неееее ... до такого еще не дожили
Номер ответа: 10
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #10
Добавлено: 19.02.08 17:54
а, сорри. Действительно всё верно.
Но почему не работает???? ))
Номер ответа: 11
Автор ответа:
Hunter
Вопросов: 23
Ответов: 71
Профиль | | #11
Добавлено: 20.02.08 07:11
2Winand
Но почему не работает???? ))
Вот именно - почему не пашет - не понимаю ... вот над этим и парюсь - вродь все попробывал (((
Правда работает - но при передаче больших файлов (ну скажем от 50 метров) вылетает эта хрень ...
Номер ответа: 12
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #12
Добавлено: 20.02.08 21:19
Без DoEvents работает?
С пропуском ошибок работает?
Номер ответа: 13
Автор ответа:
Hunter
Вопросов: 23
Ответов: 71
Профиль | | #13
Добавлено: 21.02.08 09:16
С пропуском ошибок работает?
Не пробовал ... наверна нет, потому что грит что не хватает ему стековой памяти ... а вот как её очистить - и вообще я с DoEvents не очень знаком )))) - даж не знаю что собственно он делает ((((
Номер ответа: 14
Автор ответа:
Alexius
Вопросов: 1
Ответов: 6
Web-сайт:
Профиль | | #14
Добавлено: 21.02.08 22:32
попробуй разбить файл на куски...
а вообще то... если ты не залез на системные порты и в проге не наделал ошибок..., то ошибок связанных с винсокетом не должно вылазить...
P.S. разбиение файла можешь сделать легко через цикл... это поможет тебе избавиться от бессмысленного заполнения памяти....
Номер ответа: 15
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #15
Добавлено: 22.02.08 00:15
DoEvents обрабатывает системные находящиеся в очереди. Чтоб прога не "висла" в длительных циклах.