Russian Qt Forum

Qt => Работа с сетью => Тема начата: qteshnik от Октябрь 03, 2011, 10:38



Название: QTcpSocket ждать ответа от сервера
Отправлено: qteshnik от Октябрь 03, 2011, 10:38
как дождаться полного ответа от сервера?
пробывал метод waitForReadyRead() но все равно не дожидается полного ответа, приходит только часть.


Название: Re: QTcpSocket ждать ответа от сервера
Отправлено: Пантер от Октябрь 03, 2011, 10:41
Дык читаешь часть и опять waitForReadyRead. И так пока все не придет.


Название: Re: QTcpSocket ждать ответа от сервера
Отправлено: qteshnik от Октябрь 03, 2011, 10:43
Дык читаешь часть и опять waitForReadyRead. И так пока все не придет.
а как я узнаю, что пришло всё что надо? у меня одной командой должно прийти все, можно ли ждать дождаться полного ответа от сервера?


Название: Re: QTcpSocket ждать ответа от сервера
Отправлено: Пантер от Октябрь 03, 2011, 10:45
А откуда ты узнаешь, что ответ полный?


Название: Re: QTcpSocket ждать ответа от сервера
Отправлено: qteshnik от Октябрь 03, 2011, 10:49
А откуда ты узнаешь, что ответ полный?
так вот я и хочу получить ответ полностью дождаться его, и потом все дальше делать


Название: Re: QTcpSocket ждать ответа от сервера
Отправлено: Пантер от Октябрь 03, 2011, 10:50
Ну, так крутишься в цикле и читаешь до тех пор, пока waitForReadyRead возвращает true.


Название: Re: QTcpSocket ждать ответа от сервера
Отправлено: qteshnik от Октябрь 03, 2011, 11:02
попробовал
Код
C++ (Qt)
void wait(QTcpSocket *tcp){
   if  (tcp->waitForReadyRead()) wait(tcp);
}
приложение виснет и все


Название: Re: QTcpSocket ждать ответа от сервера
Отправлено: qteshnik от Октябрь 03, 2011, 11:07
а вот так вроде заработало tcp->waitForReadyRead(30)


Название: Re: QTcpSocket ждать ответа от сервера
Отправлено: danquimby от Октябрь 04, 2011, 13:20
попробовал
Код
C++ (Qt)
void wait(QTcpSocket *tcp){
   if  (tcp->waitForReadyRead()) wait(tcp);
}
приложение виснет и все

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

Все делается подсчетом. Если что могу дать рабочий пример :)


Название: Re: QTcpSocket ждать ответа от сервера
Отправлено: DmP от Октябрь 19, 2011, 13:01
По идее окончание передачи должен быть пакет нулевой длины.


Название: Re: QTcpSocket ждать ответа от сервера
Отправлено: asvil от Октябрь 19, 2011, 16:19
Господин DmP, вы ошибаетес.


Название: Re: QTcpSocket ждать ответа от сервера
Отправлено: DmP от Октябрь 21, 2011, 12:59
Разве?