Страница: 1 |
Ошибки с Winsock (вопрос для профи). Есть клиент и есть сервер(программы, исходник поставляется) При первоначальном запросе передает НЕ ВСЕ ПАРАМЕТРЫ СРАЗУ т.е такое ощущение что он в начале теряет информацию. Передаеться только 1 или 2-3 параметра. При нажатии на кнопку ОБНОВИТЬ (т.е послать повторный запрос на все 10 параметров) передается большее количество параметров ну там 4-6 Далее нажимаю на кнопку передается остальные части... Потом нажимаю на кнопку передается ВСЕ ХОРОШО(сразу все параметры)... Но стоит выгрузить VB c сохранением программы и загрузить ее снова в VB появляется такой же эффект. Даже в скомпелированном виде такой же эффект.
Невозможно, потеря данных в ТСР невозможна (при нормальном физическом соединении в нормальных условиях + соблюдение правил пользования сокетами (что винсок.осх и делает) winsock2 (ws2_32.dll)). Вы хотите сказать что при установлении связи не на одном компьютере а на разных сервера и клиента программа будет нормально работать? Для очистки совести попробуйте заменить указанную библиотечку, но imho дело не в ней. Скорее всего ошибки в вашем коде. Поконкретней можно? Как передаются параметры. Если код не очень большой, то можно взглянуть. Так как в асе тебя не видно, то напишу сюда. Как я и предпологал ошибка в коде. Если бы ты воспользовался элементарными средствами отладки, то увидел бы, что сервер твой получает слудщее сообщение: "GET_HOSTGET_USERNAMEGET_VERSIONGET_TIMEGET_RUNTIMEGET_HOWRUNGET_WINDIRGET_WINSYSGET_WINTMPGET_MEMALLGET_MEMFREE", т.е. все твои сообщения посланные раздельно накапливаются в буфере и потом считываются за один раз. Мой совет: отсылай все сообщения за один раз (один SendData) и при приёме, соответственно, порежь их на отдельные. Если же тебе обязательно надо посылать их раздельно, то посылаешь первое, ждёшь когда сервер пришлёт ответ на него, посылешь второе и т.д. А вообще-то imho ты злоупотребляешь украшательствами и фенечками: ещё не реализовав основную функциональность лепишь кучу каких-то левых кнопочек, надписей (глючных ктому же - несколько раз возникала ошибка Out of memory). Насколько я понял ты делаешь какой-то трояенец? И что ты будешь закачивать его со всеми этими ocx'ами dll? Кстатьи говоря все функции в hitman74.dll (imho) можно заменить вызовами апишек. Если что - асю мою ты знаешь. Ну прям уж и для профи?! 8) Я сам недавно столкнулся с такой же проблемой (см. Винсок и перекачка файлов). Так вот, достаточно просто всё подряд с одного конца спихнуть, а сдругого конца принять. И всё! Неплохо, конечно, чтобы форма приниматель "знала", когда там конец. Для этого можно перед перекачкой отправить размер пересылаемого куска, оканчивающийся "\\", к примеру. Потом из буфера вырезаешь размер участка и "\\", и в результате имеем чистый кусок! А TCP действительно ничего не теряет. А если надумал сделать трояна, то используй тягу - её не так давно кто-то из форумлян накодил - для таких целей в самый раз. Только не используй его против нас! Хотя тут по-моему дураков нет - все с файерами... 8) Страница: 1 |
Вопрос: Проблемы с Winsock (Данные при передаче теряются)
Добавлено: 01.03.04 21:30
Автор вопроса: Alban | ICQ: 319660391
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #1
Добавлено: 01.03.04 22:06
Номер ответа: 2
Автор ответа:
Alban
ICQ: 319660391
Вопросов: 26
Ответов: 13
Профиль | | #2
Добавлено: 01.03.04 22:12
Номер ответа: 3
Автор ответа:
Чан
ICQ: 26977559
Вопросов: 4
Ответов: 18
Профиль | | #3
Добавлено: 01.03.04 23:19
Номер ответа: 4
Автор ответа:
Чан
ICQ: 26977559
Вопросов: 4
Ответов: 18
Профиль | | #4
Добавлено: 03.03.04 00:06
Номер ответа: 5
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #5
Добавлено: 04.03.04 01:41