Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Проблемы с Winsock (Данные при передаче теряются) Добавлено: 01.03.04 21:30  

Автор вопроса:  Alban | ICQ: 319660391 

Ошибки с Winsock (вопрос для профи).

Есть клиент и есть сервер(программы, исходник поставляется)

При первоначальном запросе передает НЕ ВСЕ ПАРАМЕТРЫ

СРАЗУ т.е такое ощущение что он в начале теряет информацию.

Передаеться только 1 или 2-3 параметра.

При нажатии на кнопку ОБНОВИТЬ (т.е послать повторный запрос на все 10 параметров) передается большее количество параметров ну там 4-6

Далее нажимаю на кнопку передается остальные части...

Потом нажимаю на кнопку передается ВСЕ ХОРОШО(сразу все параметры)...

Но стоит выгрузить VB c сохранением программы и загрузить ее

снова в VB появляется такой же эффект.

Даже в скомпелированном виде такой же эффект.

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #1
Добавлено: 01.03.04 22:06

Невозможно, потеря данных в ТСР невозможна (при нормальном физическом соединении в нормальных условиях + соблюдение правил пользования сокетами (что винсок.осх и делает) winsock2 (ws2_32.dll)).

Ответить

Номер ответа: 2
Автор ответа:
 Alban



ICQ: 319660391 

Вопросов: 26
Ответов: 13
 Профиль | | #2 Добавлено: 01.03.04 22:12

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

Ответить

Номер ответа: 3
Автор ответа:
 Чан



ICQ: 26977559 

Вопросов: 4
Ответов: 18
 Профиль | | #3 Добавлено: 01.03.04 23:19

Для очистки совести попробуйте заменить указанную библиотечку, но imho дело не в ней. Скорее всего ошибки в вашем коде. Поконкретней можно? Как передаются параметры.

Если код не очень большой, то можно взглянуть.

Ответить

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



ICQ: 26977559 

Вопросов: 4
Ответов: 18
 Профиль | | #4 Добавлено: 03.03.04 00:06

Так как в асе тебя не видно, то напишу сюда.

Как я и предпологал ошибка в коде.

Если бы ты воспользовался элементарными средствами отладки, то увидел бы, что сервер твой получает слудщее сообщение: "GET_HOSTGET_USERNAMEGET_VERSIONGET_TIMEGET_RUNTIMEGET_HOWRUNGET_WINDIRGET_WINSYSGET_WINTMPGET_MEMALLGET_MEMFREE", т.е. все твои сообщения посланные раздельно накапливаются в буфере и потом считываются за один раз.

Мой совет: отсылай все сообщения за один раз (один SendData) и при приёме, соответственно, порежь их на отдельные.

Если же тебе обязательно надо посылать их раздельно, то посылаешь первое, ждёшь когда сервер пришлёт ответ на него, посылешь второе и т.д.

А вообще-то imho ты злоупотребляешь украшательствами и фенечками: ещё не реализовав основную функциональность лепишь кучу каких-то левых кнопочек, надписей (глючных ктому же - несколько раз возникала ошибка Out of memory). Насколько я понял ты делаешь какой-то трояенец? И что ты будешь закачивать его со всеми этими ocx'ами dll? Кстатьи говоря все функции в hitman74.dll (imho) можно заменить вызовами апишек.

Если что - асю мою ты знаешь.

Ответить

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



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #5
Добавлено: 04.03.04 01:41

Ну прям уж и для профи?! 8)

Я сам недавно столкнулся с такой же проблемой (см. Винсок и перекачка файлов). Так вот, достаточно просто всё подряд с одного конца спихнуть, а сдругого конца принять. И всё! Неплохо, конечно, чтобы форма приниматель "знала", когда там конец. Для этого можно перед перекачкой отправить размер пересылаемого куска, оканчивающийся "\\", к примеру. Потом из буфера вырезаешь размер участка и "\\", и в результате имеем чистый кусок!

А TCP действительно ничего не теряет.

А если надумал сделать трояна, то используй тягу - её не так давно кто-то из форумлян накодил - для таких целей в самый раз.

Только не используй его против нас! Хотя тут по-моему дураков нет - все с файерами... 8)

Ответить

Страница: 1 |

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



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