Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Траблы с винсоком Добавлено: 18.02.08 08:01  

Автор вопроса:  Hunter
У меня такая проблема - во первых:
При первом использовании сокетов вылазиет ошибка - ну да ладно - эт я пофиксил on error resume next ...
Во вторых - при передаче данных черех tcp иногда бывает вот такой еррор: "Out of disk space" ... или чтото типа в этом роде - как от ентого избавиЦЦа ??? Причем on error resume next или on error goto ... не помогает :(

вот код:

Private Sub TCP_DataArrival(Index As Integer, ByVal bytesTotal As Long)

    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-сайт: domkratt.com
 Профиль | | #2
Добавлено: 18.02.08 11:07
Видать, места на диске нет =) Проверял?)
поставь On Error Resume Next на строчку выше.

Ответить

Номер ответа: 3
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #3
Добавлено: 18.02.08 18:57
stack space... это не связано с местом на диске думаю..
У меня такое было когда куча всего в память загружалась (ошибка в разработке). если не путаю=)

Ответить

Номер ответа: 4
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #4
Добавлено: 18.02.08 19:24
ой) не спалил это во втором посте) выход за пределы стека. видимо, много локальных переменных, вообще, вариантов много

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 18.02.08 23:46
А где закрытие файла?

Ответить

Номер ответа: 6
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #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 - несет в себе инфу о названии файла и его весе, то есть

FILEINFO|arj.rar|12345


в этом примере имя архива arj.rar, а размер 12345 ...

А где закрытие файла?


Private Sub TCP_Close(Index As Integer)
    Close #DownloadingFile    '# File Ready
    TCP(Index).Close     '# Close the winsock, for receiving next files?!
End Sub


Вопрос: Где в таком случае открываем файл перед записью в него данных?


Open App.Path & "\" & Glob_FileName For Binary Access Write As #DownloadingFile


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-сайт: winandfx.narod.ru
 Профиль | | #10
Добавлено: 19.02.08 17:54
а, сорри. Действительно всё верно.
Но почему не работает???? ))

Ответить

Номер ответа: 11
Автор ответа:
 Hunter



Вопросов: 23
Ответов: 71
 Профиль | | #11 Добавлено: 20.02.08 07:11
2Winand

а, сорри. Действительно всё верно.
Но почему не работает???? ))


Вот именно - почему не пашет - не понимаю ... вот над этим и парюсь - вродь все попробывал (((

Правда работает - но при передаче больших файлов (ну скажем от 50 метров) вылетает эта хрень ...

Ответить

Номер ответа: 12
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #12
Добавлено: 20.02.08 21:19
Без DoEvents работает?
С пропуском ошибок работает?

Ответить

Номер ответа: 13
Автор ответа:
 Hunter



Вопросов: 23
Ответов: 71
 Профиль | | #13 Добавлено: 21.02.08 09:16
Без DoEvents работает?
С пропуском ошибок работает?


Не пробовал ... наверна нет, потому что грит что не хватает ему стековой памяти ... а вот как её очистить - и вообще я с DoEvents не очень знаком )))) - даж не знаю что собственно он делает ((((

Ответить

Номер ответа: 14
Автор ответа:
 Alexius



Вопросов: 1
Ответов: 6
 Web-сайт: Kallax.ru
 Профиль | | #14
Добавлено: 21.02.08 22:32
попробуй разбить файл на куски...
а вообще то... если ты не залез на системные порты и в проге не наделал ошибок..., то ошибок связанных с винсокетом не должно вылазить...
P.S. разбиение файла можешь сделать легко через цикл... это поможет тебе избавиться от бессмысленного заполнения памяти....

Ответить

Номер ответа: 15
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #15
Добавлено: 22.02.08 00:15
DoEvents обрабатывает системные находящиеся в очереди. Чтоб прога не "висла" в длительных циклах.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам