Название: Проблемы с QTcpSocket->ReadAll() Отправлено: Harlon от Май 28, 2018, 14:15 Суть проблемы: сервер передает массив int размером 8000 байт. Клиент принимает этот массив через readAll(), всё это переводится в QVector через QDataStream, дальше программа отрисовывает график из массива. Но в большинстве случаев получается следующая картина, клиент принимает сначала половину или более меньшую(большую) часть данных, начинает рисовать график, потом вектор обрывается и принимается остаток данных и вырисовывется уже крокозябра, а не график. Размер передаваемых данных статичен, т.е. всегда 8000 байт. Вопрос, как заставить дочитать все данные, от сервера? Помогите пожалуйста. Я конечно наверное всех уже задолбал со своими вопросами, но возможно эта тема поможет не только мне, спасибо за понимание.
Код
Нашел пример в интернете, только не догоняю, что тут проверяется в цикле. Т.е. bytesAvailable() возвращает число прочитанных байт и если я правильно понял, то в моем случае их надо сравнить с моим размером сообщения. Код
Вот как-то так? Название: Re: Проблемы с QTcpSocket->ReadAll() Отправлено: Пантер от Май 28, 2018, 14:31 Тебе надо вешаться на сигнал readyRead и в нем вычитывать все в свой буфер, а буфер проверять на размер - если 8000, то можно парсить.
Название: Re: Проблемы с QTcpSocket->ReadAll() Отправлено: Harlon от Май 28, 2018, 15:37 Код
Так? Название: Re: Проблемы с QTcpSocket->ReadAll() Отправлено: kuzulis от Май 28, 2018, 15:40 Код
Название: Re: Проблемы с QTcpSocket->ReadAll() Отправлено: Пантер от Май 28, 2018, 15:45 Код
Название: Re: Проблемы с QTcpSocket->ReadAll() Отправлено: Harlon от Май 28, 2018, 15:46 Спасибо, попробую сделать, отпишусь о результате.
ВСЁ отлично, всем спасибо! |