Qt 当我试图从套接字读取QString时,应用程序崩溃

Qt 当我试图从套接字读取QString时,应用程序崩溃,qt,sockets,Qt,Sockets,我正在尝试开发一个使用套接字进行客户端和服务器通信的Qt程序。我需要帮助来找出当客户端连接并且服务器试图获取QString时服务器崩溃的原因 我在服务器端有以下代码: void Client::onReadyRead() { qDebug() << "On ready read!"; QDataStream in(mSocket); in.setVersion(QDataStream::Qt_4_0); for (;;) { if(

我正在尝试开发一个使用套接字进行客户端和服务器通信的Qt程序。我需要帮助来找出当客户端连接并且服务器试图获取QString时服务器崩溃的原因

我在服务器端有以下代码:

void Client::onReadyRead() {
    qDebug() << "On ready read!";
    QDataStream in(mSocket);
    in.setVersion(QDataStream::Qt_4_0);

    for (;;) {

        if(!mBlockSize) {
            if (mSocket->bytesAvailable() < sizeof(quint16)) break;
            in >> mBlockSize;
        }

        if(mSocket->bytesAvailable() < mBlockSize) break;

        qDebug() << "Package was recieved!";
        qDebug() << "Block size: " << mBlockSize;

        if(Table::INVALID_ID == mUser.id()) {
            QString authStr;
            in >> authStr;
            qDebug() << "Recieved account data: " << authStr;
        }

        mBlockSize = 0;
    }
}
void客户端::onReadyRead(){
qDebug()字节可用()>mBlockSize中;
}
如果(mSocket->bytesavable()qDebug()它将有助于编辑问题以添加您看到的任何特定错误消息或堆栈跟踪。。。在
变量中带有
的内容。只是它并不是每次都像我理解的那样
void Client::onConnected()
{
    qDebug() << "Connected!";
    QByteArray block;
    QDataStream out(&block, QIODevice::WriteOnly);
    //Reserve 2 bytes
    out << (quint16)0 << mEmail << "|" << mPassword;
    //Back to the beginning
    out.device()->seek(0);
    //Write a block size
    out << (quint16)(block.size() - sizeof(quint16));
    mSocket->write(block);
}