Как убедиться, что данные, считанные из QLocalSocket, имеют правильную последовательность / размер / периодичность? - PullRequest
0 голосов
/ 06 мая 2019

У меня есть QWidget, в котором хранится QProcess, связь между виджетами будет подпроцессом: QLocalServer / QLocalSocket.

Чтобы упростить вопрос, скажем, программа запускается вПодпроцесс, принадлежащий виджету, в любое время запишет целое число (4 байта) - QLocalSocket.

Виджет, содержащий подпроцесс, соединяется с процессом с помощью сигнала readyRead

localSocket = localServer->nextPendingConnection();

connect(localSocket, &QLocalSocket::readyRead, this, &StationWidget::onChildProcessSignal);

Однако в функции onChildProcessSignal я обнаружил, что не могу сделать никаких предположений относительно последовательности, которую я прочитал через сокет, byteAvailable может варьироваться от 4 до 20.

Я пытался сразу же позвонить QLocalSocket::flush после QLocalSocket::write, однако, похоже, что это не помогло с ситуацией (система Windows).

Итак, какие методы я должен использовать дляубедитесь, что данные поступают последовательно и каждый пакет по 4 байта за раз.Могут ли другие методы IPC сделать лучше?

...