Суть проблемы: сервер передает массив int размером 8000 байт. Клиент принимает этот массив через readAll(), всё это переводится в QVector через QDataStream, дальше программа отрисовывает график из массива. Но в большинстве случаев получается следующая картина, клиент принимает сначала половину или более меньшую(большую) часть данных, начинает рисовать график, потом вектор обрывается и принимается остаток данных и вырисовывется уже крокозябра, а не график. Размер передаваемых данных статичен, т.е. всегда 8000 байт. Вопрос, как заставить дочитать все данные, от сервера? Помогите пожалуйста. Я конечно наверное всех уже задолбал со своими вопросами, но возможно эта тема поможет не только мне, спасибо за понимание.
C++ (Qt)
void readSocketData()
{
while(socket->bytesAvailable())
datacounter += socket->readAll().length();
qDebug() << datacounter;
}
Нашел пример в интернете, только не догоняю, что тут проверяется в цикле. Т.е. bytesAvailable() возвращает число прочитанных байт и если я правильно понял, то в моем случае их надо сравнить с моим размером сообщения.
C++ (Qt)
int x = 8000;
while(x > socket->bytesAvailable())
datacounter += socket->readAll().length();
Вот как-то так?