У меня есть 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 сделать лучше?