#include "FileReceiver.h" #include 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(); }