problem with QLocalSocket sending continues data to QLocalServer

I'm trying to send some data from QLocalSocket to QLocalSever in a loop. Sever only gets the first data and not receiving subsequent data, but if I introduce 1 mec delay between each call from the client then the server starts to receive everything. Please check out the below Client & Server code.

client.cpp

#include "client.h"
#include "QDataStream"
#include <QTest>

TestClient::TestClient() : m_socket{new QLocalSocket(this)}{
    m_socket->connectToServer("TestServer");
    if (m_socket->waitForConnected(1000)) {
      qDebug("socket Connected!");
    }
    connect(m_socket, &QLocalSocket::readyRead, this, &TestClient::onNewData);
}

void TestClient::onNewData() {
    qCritical() << "data received from server";
}

void TestClient::sendDataToServer() {
    QByteArray block;
    QDataStream out(&block, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_5_10);
    QString testString = "test data";
    out << quint32(testString.size());
    out << testString;
    m_socket->write(block);
    m_socket->flush();
}

void TestClient::startClient() {
    for(int i = 0; i < 5; i++) {
        //QTest::qWait(1); //works if I uncomment this line
        sendDataToServer();
    }
}

server.cpp

#include "server.h"

TestServer::TestServer() : m_server{new QLocalServer(this)} {
    QLocalServer::removeServer("TestServer");
    if (!m_server->listen("TestServer")) {
        qCritical() << "couldn't connect to server";
    }
    connect(m_server, &QLocalServer::newConnection, this, &TestServer::onNewConnection);
}

void TestServer::onNewConnection() {
    m_socket = m_server->nextPendingConnection();
    connect(m_socket, &QLocalSocket::readyRead, this,
            &TestServer::onNewData);
    connect(m_socket, &QLocalSocket::disconnected, m_socket,
            &QLocalSocket::deleteLater);
}

void TestServer::onNewData() {
    QLocalSocket* client = qobject_cast<QLocalSocket*>(sender());
    client->readAll();
    qCritical() << "data read by server";
}

from the qt doc, it's stated that

readyRead() is not emitted recursively; if you reenter the event loop or call waitForReadyRead() inside a slot connected to the readyRead() signal, the signal will not be reemitted (although waitForReadyRead() may still return true).

so is this my problem? adding timer is the only solution here?

You can compile this test project -> http://www.filedropper.com/testsocket

How many English words
do you know?
Test your English vocabulary size, and measure
how many words do you know
Online Test
Powered by Examplum