34 lines
764 B
C++
34 lines
764 B
C++
|
#include "FileReceiver.h"
|
||
|
|
||
|
#include <QFile>
|
||
|
|
||
|
FileReceiver::FileReceiver(QTcpSocket* tcp, QObject* parent) : QThread(parent) {
|
||
|
m_tcp = tcp;
|
||
|
}
|
||
|
|
||
|
void FileReceiver::run() {
|
||
|
QFile* file = new QFile("recv.txt");
|
||
|
file->open(QFile::WriteOnly);
|
||
|
|
||
|
connect(m_tcp, &QTcpSocket::readyRead, this, [=]() {
|
||
|
static int count = 0;
|
||
|
static int total = 0;
|
||
|
if (count == 0) {
|
||
|
m_tcp->read((char*)&total, 4);
|
||
|
}
|
||
|
|
||
|
QByteArray all = m_tcp->readAll();
|
||
|
count += all.size();
|
||
|
file->write(all);
|
||
|
|
||
|
if (count == total) {
|
||
|
m_tcp->close();
|
||
|
m_tcp->deleteLater();
|
||
|
file->close();
|
||
|
file->deleteLater();
|
||
|
emit Finish();
|
||
|
}
|
||
|
});
|
||
|
exec();
|
||
|
}
|