Russian Qt Forum
Ноябрь 23, 2024, 21:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTcpSocket ждать ответа от сервера  (Прочитано 7329 раз)
qteshnik
Гость
« : Октябрь 03, 2011, 10:38 »

как дождаться полного ответа от сервера?
пробывал метод waitForReadyRead() но все равно не дожидается полного ответа, приходит только часть.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Октябрь 03, 2011, 10:41 »

Дык читаешь часть и опять waitForReadyRead. И так пока все не придет.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
qteshnik
Гость
« Ответ #2 : Октябрь 03, 2011, 10:43 »

Дык читаешь часть и опять waitForReadyRead. И так пока все не придет.
а как я узнаю, что пришло всё что надо? у меня одной командой должно прийти все, можно ли ждать дождаться полного ответа от сервера?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Октябрь 03, 2011, 10:45 »

А откуда ты узнаешь, что ответ полный?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
qteshnik
Гость
« Ответ #4 : Октябрь 03, 2011, 10:49 »

А откуда ты узнаешь, что ответ полный?
так вот я и хочу получить ответ полностью дождаться его, и потом все дальше делать
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Октябрь 03, 2011, 10:50 »

Ну, так крутишься в цикле и читаешь до тех пор, пока waitForReadyRead возвращает true.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
qteshnik
Гость
« Ответ #6 : Октябрь 03, 2011, 11:02 »

попробовал
Код
C++ (Qt)
void wait(QTcpSocket *tcp){
   if  (tcp->waitForReadyRead()) wait(tcp);
}
приложение виснет и все
Записан
qteshnik
Гость
« Ответ #7 : Октябрь 03, 2011, 11:07 »

а вот так вроде заработало tcp->waitForReadyRead(30)
Записан
danquimby
Гость
« Ответ #8 : Октябрь 04, 2011, 13:20 »

попробовал
Код
C++ (Qt)
void wait(QTcpSocket *tcp){
   if  (tcp->waitForReadyRead()) wait(tcp);
}
приложение виснет и все

ты вообще когда нить работал с протоколами ?...
ты просто посылай 4 первых байта , длину пакета.
и потом обрабатывай что пришло
потому что придти тебе может и четверть пакета
то есть 1 целый и половинку следующего.

Все делается подсчетом. Если что могу дать рабочий пример Улыбающийся
Записан
DmP
Гость
« Ответ #9 : Октябрь 19, 2011, 13:01 »

По идее окончание передачи должен быть пакет нулевой длины.
Записан
asvil
Гость
« Ответ #10 : Октябрь 19, 2011, 16:19 »

Господин DmP, вы ошибаетес.
Записан
DmP
Гость
« Ответ #11 : Октябрь 21, 2011, 12:59 »

Разве?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.162 секунд. Запросов: 22.