Qt网络文件断点续传多文件下载器
下载地址:
torrent.zip:
关键代码:
1.定义文件信息:
struct MetaInfoSingleFile
{
qint64 length;
QByteArray md5sum;
QString name;
int pieceLength;
QList<QByteArray> sha1Sums;
};
struct MetaInfoMultiFile
{
qint64 length;
QByteArray md5sum;
QString path;
};
2.读写及验证文件
int FileManager::read(int pieceIndex, int offset, int length)
{
ReadRequest request;
request.pieceIndex = pieceIndex;
request.offset = offset;
request.length = length;
QMutexLocker locker(&mutex);
request.id = readId++;
readRequests << request;
if (!wokeUp) {
wokeUp = true;
QMetaObject::invokeMethod(this, "wakeUp", Qt::QueuedConnection);
}
return request.id;
}
void FileManager::write(int pieceIndex, int offset, const