Добрый день!
Помогите разобраться, почему в моем коде иногда пакеты и файлы 60+ мб доходят, а иногда и 20 мб падает почти сразу..
Я понимаю, что передач полно, бери любую, но все таки..
Клиент:
QByteArray  arrBlock;
    qint64 fileSize;
    QDataStream out(&arrBlock, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_5_0);
    sendFile = new QFile(filePatch);
    sendFile->open(QFile::ReadOnly);
    QFileInfo fi(filePatch);
    QString fileName = fi.fileName();
    fileSize = fi.size();
    QByteArray buffer = sendFile->readAll();
    out << quint16(0) << QTime::currentTime() << QString("FILE")
            << fileName << fileSize << buffer;
    out.device()->seek(0);
    out << quint16(arrBlock.size() - sizeof(quint16));
    tcpSocket->write(arrBlock);
И принимающая сторона.
void Server::ReadMessage()
{
    QTime   time;
    QString type;
    QTcpSocket *client = (QTcpSocket*)(sender());
    QDataStream in(client);
    in.setVersion(QDataStream::Qt_5_0);
    qDebug() << client->bytesAvailable();
    if (!nextBlockSize) {
        if (quint16(client->bytesAvailable()) < sizeof(quint16)) {
            return;
        }
        in >> nextBlockSize;
    }
    if (client->bytesAvailable() < nextBlockSize) {
        return;
    }
    in >> time >> type;
...
SendingFile(client);
}
void Server::SendingFile(QTcpSocket *client)
{
    QTcpSocket* mClientSocket = (QTcpSocket*)sender();
    QDataStream in(client);
    in.setVersion(QDataStream::Qt_5_0;
    QByteArray buffer;
    QString fileName;
    qint64 fileSize;
    in >> fileName >> fileSize;
    qDebug() << fileName;
    qDebug() << fileSize;
        forever
        {
            if (!nextBlockSize) {
                if (quint16(client->bytesAvailable()) < sizeof(quint16)) {
                    break;
                }
                in >> nextBlockSize;
            }
            in >> buffer;
            if (client->bytesAvailable() < nextBlockSize) {
                break;
            }
        }
        QFile receiveFile(dirDownloads + fileName);
        receiveFile.open(QIODevice::ReadWrite);
        receiveFile.write(buffer);
        receiveFile.close();
        buffer.clear();
    nextBlockSize = 0;
}
    
Я думаю, что дело в quint16, но не знаю, лучше послушаю Вас  
