LINUX.ORG.RU

[Qt][QTcpSocket]Получить весь пакет данных

 


0

0

Как я понял сокет изначально работает в асинхронном режиме и можно принимать данные в слоте, подключенному к сигналу redyRead(). Но там данные поступают асинхронно. Можно ли работать через QTcpSocket как через синхронное соединение? Чтоб получать сразу весь пакет, а не по кускам.

★★★★★
Ответ на: комментарий от Begemoth

Не прокатило.
Вот код:
char* txt = "GET / HTTP1.1\r\nHost:www.ya.ru\r\n\r\n";
Socket->write(txt);
Socket->moveToThread(0);
Socket->waitForReadyRead();
char* data = new char[300000000];
Socket->read(data,300000000);
std::cout<<data<<"\n";

Получаем явно не всю страницу.

trex6 ★★★★★
() автор топика
Ответ на: комментарий от trex6

> Не прокатило.

while (Socket->waitForReadyRead()) {
    QByteArray data = Socket->readAll();
    std::cout << data.data();
}
std::cout << "\n";
arsi ★★★★★
()
Ответ на: комментарий от Skala

> Т.е. идея такая: вешать на RequestFinished, обработчик, потом в цикле ждать , когда RequestFinished отработает, изменив переменную finished.

Скажите, а гвозди вы лбом забиваете?

Begemoth ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.