Cześć,

podczas uruchamiania klienta łącze się z serwerem i pobieram z niego pewne dane niezbędne do uruchomienia głównego programu.
Wysyłam do serwera jakiegoś stringa:

    
    QByteArray byte_arr;
    QDataStream bty(&byte_arr, QIODevice::WriteOnly);
    bty.setVersion(QDataStream::Qt_5_5);

    QString text = "Testowy string";
    bty << qint32(0) << text;
    bty.device()->seek(0);
    bty << qint32(byte_arr.size() - sizeof(qint32));
    this->socket->write(byte_arr);

Początkowo funkcja nie działała ponieważ klient nie czekała na odpowiedź serwera tylko wykonywał dalej swój kod.
Dodałem:

    
    if(!this->socket->waitForReadyRead(-1))
    {
        return;
    }

i generalnie pomogło, klient uruchamia readMessage() i odbiera poprawnie wiadomość.
Problem jednak pojawia się przy większych wiadomościach odbieranych z serwera, wydaje mi się, że metoda odbiera tylko pierwszą paczkę i nie czekając na kolejne wykonuje dalej kod klienta, tak wygląda odbiór:

readMessage()
{

    QDataStream dat(this->socket);
    dat.setVersion(QDataStream::Qt_5_5);

    if(blockSize == 0)
    {
        if(this->socket->bytesAvailable() < sizeof(qint32))
            return;
        dat >> blockSize;
    }

    if(this->socket->bytesAvailable() != blockSize)
    {
        return;
    }
qDebug() << " 1: " << this->socket->bytesAvailable();
qDebug() << " 2: " << blockSize;
    dane >> dataType;

Jak zmusić funkcję aby czekała na całą wiadomość i dopiero jak dojdzie iść dalej z wykonywaniem reszty kodu?
Próbowałem dodać: socket->waitForBytesWritten(-1) ale nic nie pomogło :/