Russian Qt Forum
Ноябрь 23, 2024, 01:28
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
QHttp (проблема с передачай большого к-ва запросов)
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QHttp (проблема с передачай большого к-ва запросов) (Прочитано 7411 раз)
Kainit
Гость
QHttp (проблема с передачай большого к-ва запросов)
«
:
Октябрь 13, 2007, 18:39 »
Qt 4.3.1 и 4.3.2 (и есть подозрения что и другие версии тоже)
Есть сервлет под TomCat-ом и есть клиент на Qt, использующий QHttp.
При передаче последовательно, около 10-15 запросов, в определённый момент QHttp начинает отправлять только заголовок HTTP, не отправляя собственно тела, а поскольку в заголовке указан Content-Lenght, то сервлет ожидает данных, которые не приходят и у сервлета случается SocketTimeoutException (сам сервлет не виноват, смотрел TcpTrace-ом, именно Qt-шный клиент отсылает запросы не отсылая тела).
Самое интересное что я подписался на все сигналы QHttp и поглядел на процесс отсылки такого неправильного запроса.
requestStarted ID=13
| dataSendProgress total=357 done=229 (здесь total абсолютно правильный и QHttp начинает отправлять хедер)
| dataSendProgress total=229 done=229 (а вот здесь почему-то изменился total и я совершенно не понимаю, почему!)
| dataReadProgress total=228 done=228 (ответ от сервлета принимается абсолютно нормально)
requestFinished ID=13 error=false
Сталкивался ли кто-нибудь с такой проблемой?
По каким причинам может внезапно, в процессе отправки запроса смениться total?
Не подскажете-ли, в какой направлении копать (с выделением памяти всё нормально и QByteArray & data, и QIODevice * to живы всё время выполнения запросами, некорректной работы с памятью нету, проверено Bound Checker-ом)...
«
Последнее редактирование: Октябрь 14, 2007, 12:17 от Kainit
»
Записан
Kainit
Гость
Re: QHttp (проблема с передачай большого к-ва запросов)
«
Ответ #1 :
Октябрь 14, 2007, 12:18 »
Люди, откликнитесь! Неужели никто не встречался с такой проблемой?
Записан
ритт
Гость
Re: QHttp (проблема с передачай большого к-ва запросов)
«
Ответ #2 :
Октябрь 16, 2007, 19:43 »
отправляется один и тот же пакет или разные? "в определённый момент" - момент всегда одинаковый?
и вообще, приведи код - хоть повторить и проверить можно будет
Записан
Kainit
Гость
Re: QHttp (проблема с передачай большого к-ва запросов)
«
Ответ #3 :
Октябрь 17, 2007, 09:49 »
Пакеты разные, но суть у них одна - заголовок POST и указан Content-Lenght, в теле - небольшой кусок XML, деревце из 10 узлов (для определённости будем считать что это SOAP вызов). Кстати, хорошая мысль, попробую проверить на одинаковых пакетах...
Цитировать
"в определённый момент" - момент всегда одинаковый?
В том-то и дело что ошибка, так сказать, неповторяемая и моменты каждый раз разные, ибо QHttp неблокируемый и там всё живёт на ивентах, которые приходят когда им вздумается, к тому же нагрузка на сетку непостоянна и запросы идут с разной скоростью.
Даже возникла мысль написать в службу поддержки троллей...
Цитировать
и вообще, приведи код
Лады, вечером постараюсь его укоротить до читаемого.
Кстати, никто не пытался QHttp проверять с Bound Checker-ом? У меня онпри закрытии сокета QHttp, по завершении запроса, выдаёт очень неприятные ошибки (прога в 2 строчки, чисто QT экзампл), я её тоже вечером приведу.
Записан
ритт
Гость
Re: QHttp (проблема с передачай большого к-ва запросов)
«
Ответ #4 :
Октябрь 17, 2007, 12:15 »
поищи про профилирование на этом форуме - периодически эта тема поднимается и так же периодически завершается примерно одинаково
по теме:
я юзаю соап (есс-но ПОСТ-ом и есс-но ХМЛ) - не сильно сложная надстройка над кухттп - ни разу таких проблем не замечал. так что, код будет весьма кстати
/*лучше выложи сразу компилируемый код тарболлом куда-нть в шары*/
Записан
Kainit
Гость
Re: QHttp (проблема с передачай большого к-ва запросов)
«
Ответ #5 :
Октябрь 18, 2007, 09:19 »
Т-а-к, код временно откладывается, ибо не удалось на мини-тесте из 3х строчек получить ту же ошибку, что очень странно (возможно это потому что я сменил Bound Checker на более свежий). Буду думать дальше.
Про профилирование и отлов ликов прочитал, но ни одного вразумительного слова не нашел. Да, большинство пользуется Bound Checker - ом и на этом всё обсуждение ошибок и ликов заканчивается :-). Очень обидно что никто не предложил другого средства для винды, ибо на большом проекте баунд чекеру откровенно тяжело работать (тот же Code Guard из Borland-а работает на порядке быстрее).
Записан
Tonal
Гость
Re: QHttp (проблема с передачай большого к-ва запросов)
«
Ответ #6 :
Октябрь 18, 2007, 11:36 »
Ну и глючность у него фирменная багландовская. ;-)
Записан
Kainit
Гость
Re: QHttp (проблема с передачай большого к-ва запросов)
«
Ответ #7 :
Октябрь 18, 2007, 12:06 »
Цитировать
Ну и глючность у него фирменная багландовская. ;-)
С этим не поспоришь. Code Guard у меня такие лики пропускал, что закачаешься. Но зато быстро работает и всё-таки процентов 80-90 багов ловит. А вот Bound Checker у меня только стартует минуту...
Записан
Kainit
Гость
Re: QHttp (проблема с передачай большого к-ва запросов)
«
Ответ #8 :
Январь 09, 2008, 13:05 »
Сорри, даже забыл что задавал вопрос, а сейчас, после структуризации форума он как-то наверх вылез.
Проблема, разумеется, была решена и я в двух словах расскажу в чём она была.
- клиент делал огромное количество запросов к серверу
- сам результат запроса был крохотный и с его выдачей сервер справлялся моментально
- но обработка этого результата на клиенте занимала порядочно времени
- обработка эта происходила прямо в методе requestFinished...
собственно, в этом и проблема, пока отрабатывал по несколько секунд в очереди один результат запроса, остальные покорно ждали, а сервер через положенное количество секунд генерил SocketTimeoutException.
проблема разрешилась выносом обработки запроса из requestFinished в отдельный поток
Записан
ритт
Гость
Re: QHttp (проблема с передачай большого к-ва запросов)
«
Ответ #9 :
Январь 18, 2008, 19:00 »
ай-ай-ай...прямо, как маленький
Записан
Kainit
Гость
Re: QHttp (проблема с передачай большого к-ва запросов)
«
Ответ #10 :
Январь 21, 2008, 10:50 »
Самому стыдно. Наверное неделю тупил.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...