2
我使用此代碼通過套接字沒有尖峯內存使用傳輸大型文件:的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 MB,並且操作系統會被殺死它。