Я использую этот код для передачи большого файла через сокет без каблука в использовании памяти:Qt: QSslSocket :: bytesWritten() сигнал излучается слишком часто
connect(socket, SIGNAL(bytesWritten(qint64)), this, SLOT(refillSocketBuffer(qint64)));
refillSocketBuffer(128*1024);
}
void FtpRetrCommand::refillSocketBuffer(qint64 bytes)
{
if (!file->atEnd()) {
socket->write(file->read(bytes));
} else {
socket->disconnectFromHost();
}
}
Это прекрасно работает с QTcpSocket
, но с зашифрованным QSslSocket, сигнал bytesWritten()
испускается постоянно, что заставляет мою функцию записывать в сокет все время, быстрее, чем он может отправлять данные через сокет, поэтому в конечном итоге его использование памяти идет до 400 МБ, а ОС убивает Это.