QTcpSocket + QDataStream — c++ qt qt5

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд
Загрузка...

Вопрос:


Доброго дня!
Есть устройство с которого нужно считывать строку в 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?

Автор вопроса: Renovacio

Источник

Вам также может быть интересно:

Drag and Drop UWP — c# xaml mvvm
Вопрос: Нужно иметь возможность добавлять изображения в приложение путем перетаскивания из файловой системы У Grid включил AllowDrop. Но как добавить перетаскиваемые изображения в коллекцию? Т.к. те ...
Растягивание Высоты , Резина — html css html5
Вопрос: Здравствуйте! Реализовал резиновый дизайн. Растягивается ширина, но длина по % не растягивается. Возможно ли это реализовать? Или так и задумано, растягивание только на ширину ...
Jquery position().left Как быть на мобильниках? — javascript jquery css
Вопрос: На мобильных устройствах, если зумишь экран, position всегда разный. $('g').position().left Как сделать так, чтобы он не менял свои значения? Автор вопроса: ...
Jquery position().left Как быть на мобильниках? — javascript jquery css
Вопрос: На мобильных устройствах, если зумишь экран, position всегда разный. $('g').position().left Как сделать так, чтобы он не менял свои значения? Автор вопроса: ...
requestAnimation и очередность отрисовки — javascript canvas
Вопрос: Здравствуйте! Реализовал 2D игру и в Edge работает все плавно и круто, но в Firefox'e подвисает, сказали, что нужно сделать, чтобы раз-два момент и все ...
Контекстное/всплывающее меню в Android — java android popup
Вопрос: Есть ли техническая возможность сделать приложение, добавляющее свое контекстное или всплывающее меню в любом месте системы? Хочу, чтобы при выделении любого текста появлялась дополнительная кнопка ...
Контекстное/всплывающее меню в Android — java android popup
Вопрос: Есть ли техническая возможность сделать приложение, добавляющее свое контекстное или всплывающее меню в любом месте системы? Хочу, чтобы при выделении любого текста появлялась дополнительная кнопка ...
Завершить службы циклом — c# windows-service
Вопрос: Можно ли остановить службы циклом? У меня есть список служб, занёс их в List List<string> name = new List<string> { "AdobeARMservice", "RemoteRegistry", "TermService", "Messenger", "SSDPSRV", ...
Завершить службы циклом — c# windows-service
Вопрос: Можно ли остановить службы циклом? У меня есть список служб, занёс их в List List<string> name = new List<string> { "AdobeARMservice", "RemoteRegistry", "TermService", "Messenger", "SSDPSRV", ...
RecyclerView — разная разметка — android recyclerview
Вопрос: Смотрел, я смотрел в сторону RecyclerView и наконец решил кинуть ListView и на тебе! В "плохом прошлом" мой ListView использовался для двух разметок. Сейчас я ...
RecyclerView — разная разметка — android recyclerview
Вопрос: Смотрел, я смотрел в сторону RecyclerView и наконец решил кинуть ListView и на тебе! В "плохом прошлом" мой ListView использовался для двух разметок. Сейчас я ...
Как правильно передать массив аргументом для пользовательской функции — php
Вопрос: Если не брать в функцию все это, тогда результат работает. А если вот так в функции все выполнять, тогда PHP ругается: «Invalid ...
Как правильно передать массив аргументом для пользовательской функции — php
Вопрос: Если не брать в функцию все это, тогда результат работает. А если вот так в функции все выполнять, тогда PHP ругается: «Invalid ...
ViewPager внутри ViewPager — такие матрешки работают? — android viewpager
Вопрос: Доброго времени суток. Назрела новая задача. Есть каталог мастеров. При выборе конкретного мастера открывается его страница (активити с ViewPager), и теперь мастеров можно перелистывать свайпом. ...
Почему id всегда 1 Yii2 — yii авторизация
Вопрос: Использую все как по документации. Для получения информации о пользователе использую $identity = $model->findOne(]); И каким бы не был email, id пользователя всегда ...

Оставьте ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *