Qt Server không thể gửi liên tiếp nhiều tin nhắn cho Client

Em tạo ra một Server với nhiều client không sử dụng thread. Bên Server có phương thức gửi và nhận như sau :

void CuaSoServer::GuiTinNhanChoMoiNguoi(const QString &tinNhan)
{ //phương thức gửi tin nhắn cho tất cả client và tất cả Client được Server quản lí bằng một QList
    QByteArray goiTinNhan;
    QDataStream out(&goiTinNhan,QIODevice::WriteOnly);

    out << (quint16) 0;
    out << tinNhan;
    out.device()->seek(0);
    out << (quint16) (goiTinNhan.size() - sizeof(quint16));

    for (int i = 0; i < m_Client.size(); i++)
    {
        this->m_Client.at(i)->write(goiTinNhan);
    }
}
void CuaSoServer::NhanDuLieu()
{//Nhận dữ liệu từ các Client
    QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender());
    if (socket == 0)
        return;
    QDataStream in(socket);
    if (this->m_kichThuoc == 0)
    {
        if (socket->bytesAvailable() < (int) sizeof(quint16))
            return;
        in >> this->m_kichThuoc;
    }
    if (socket->bytesAvailable() < this->m_kichThuoc)
        return;
    QString tinNhan;
    in >> tinNhan;
    GuiTinNhanChoMoiNguoi(tinNhan);
    this->m_kichThuoc = 0;
}

Phương thức nhận của Client

void CuaSoClient::NhanDuLieu()
{
    QDataStream in(m_Client);
    if (this->m_kichThuoc == 0)
    {
        if (this->m_Client->bytesAvailable() < (int) sizeof(quint16))
            return;
        in >> this->m_kichThuoc;
    }
    if (this->m_Client->bytesAvailable() < this->m_kichThuoc)
        return;
    QString tinNhan;
    in >> tinNhan;
    ui->cuocHoiThoai->append(tinNhan);
    this->m_kichThuoc = 0;
}

Mỗi khi có kết nối từ một Client mới, Server sẽ thực hiện phương thức :

void CuaSoServer::KetNoiMoi()
{
    GuiTinNhanChoMoiNguoi("<i>Đã có một người dùng tham gia phòng CHAT</i>");
    GuiTinNhanChoMoiNguoi("Hãy chào hỏi nhau !");
    
    QTcpSocket *New_client = this->m_Server->nextPendingConnection();
    this->m_Client.push_back(New_client);
    connect(New_client,SIGNAL(readyRead()),this,SLOT(NhanDuLieu()));
    connect(New_client,SIGNAL(disconnected()),this,SLOT(NgatKetNoi()));
}

Những Client mới kết nối sẽ không nhận được hai tin nhắn “Đã có một người dừng …” và “Hãy chào hỏi …”. Nhưng vấn đề là những client cũ chỉ nhận được tin nhắn “Đã có một người …” và phải nhắn một tin nhắn bất kì thì tin nhắn sau mới xuất hiện, và cứ liên tục phải gửi một tin nhắn mới thì tin nhắn trước mới xuất hiện. Điều đó gây ra trễ tin nhắn. Ai từng nghiên cứu giúp em với được không ạ ?

Xin close topic, đã tìm ra hướng giải quyết.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?