QTcpSocket + QDataStream

196
22 марта 2018, 09:26

Доброго дня! Есть устройство с которого нужно считывать строку в ACSII протокол общения TCP/IP. Есть рабочий код:

QString tmp;
QByteArray bytes = m_TcpSocket->readAll();
tmp.append(bytes);
ui->textEdit->append(tmp);
// На выходе получаем строку: "22N00001CPZL59OMX3G3TG7710140010062586CG9P6KDCZSBDNT7GFQPA1ERDT63X36"

Но, везде указывают что нужен QDataStream "Класс незаменимым для обмена данными по сети с использованием сокетных соединений." Как я не пытался, я не могу получить через него заветную строчку, как в коде выше. Варианты которые я попробовал:

QString tmp; 
QByteArray bytes = m_pTcpSocket->readAll();
QDataStream out(&bytes, QIODevice::ReadWrite);
out.setVersion(QDataStream::Qt_5_10);
out >> tmp;
ui->textEdit->append(tmp);
//Получаю пустую строчку.

Вариант 2( из книги Шлее М. Qt5.3):

QDataStream in(m_TcpSocket);
in.setVersion(QDataStream::Qt_DefaultCompiledVersion);
for(;;){
    if(!m_BlockSize) {
        if(m_TcpSocket->bytesAvailable() < sizeof(quint16)){
            break;
        }
        in >> m_BlockSize;
    }
    if(m_TcpSocket->bytesAvailable() < m_BlockSize){
        break;
    }
    QString str;
    in >> str;
    ui->textEdit->append(str);
    m_BlockSize = 0;
}

Доходит до if(m_TcpSocket->bytesAvailable() < m_BlockSize) и дальше не идет, а если пустить дальше, то всё равно пустая строка на выходе. Подскажите, чего не хватает для работы с QDataStream?

READ ALSO
Чтение логов Win - C++

Чтение логов Win - C++

Необходимо написать программу, которая бы читала лог-файлы ВидовсПроблема в том, что мы этого ещё не учили, а курсовую делать нужно

196
Задача с нахождением высоты

Задача с нахождением высоты

Школьная задача C++, решить не могу, подскажите в чем ошибка или просто намекните как по другому ее решать?

190
Реализация графа через смежные вершины

Реализация графа через смежные вершины

ЗдравствуйтеУ меня есть задача- написать функции для графа через сопредельные вершины - добавить вершину, добавить ребро, добавить вес ребра

220
Крашится программа(с++)

Крашится программа(с++)

Ошибка на этапе выполненияОтладчиком определил что слетает во втором вызове функции minusEL на месте delete[]ar

191