#pragma once
#include <QWidget>
#include "ui_QtClient.h"
#include <QTcpSocket>
#include <QFile>
class QtClient : public QWidget
{
Q_OBJECT
public:
QtClient(QWidget *parent = Q_NULLPTR);
~QtClient();
private:
Ui::QtClient ui;
QTcpSocket *ptcpSocket;
QFile file;
QString fileName;
qint64 fileSize;
qint64 recvSize;
bool isStart;
};
#include "QtClient.h"
#include <QMessageBox>
QtClient::QtClient(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
setWindowTitle(QString::fromLocal8Bit("客户端"));
ui.progressBar->setValue(0);
ptcpSocket = new QTcpSocket(this);
isStart = true;
connect(ptcpSocket, &QTcpSocket::readyRead, [=]() {
QByteArray buf = ptcpSocket->readAll();
if (isStart)
{
isStart = false;
fileName = QString(buf).section("##", 0, 0);
fileSize = QString(buf).section("##", 1, 1).toInt();
recvSize = 0;
ui.progressBar->setMinimum(0);
ui.progressBar->setMaximum(fileSize / 1024);
file.setFileName(fileName);
file.open(QIODevice::WriteOnly);
}
else
{
qint64 len = file.write(buf);
recvSize += len;
ui.progressBar->setValue(recvSize / 1024);
if (recvSize == fileSize)
{
QMessageBox::information(this, QString::fromLocal8Bit("完成"), QString::fromLocal8Bit("文件接收完成"));
file.close();
ptcpSocket->disconnectFromHost();
ptcpSocket->close();
}
}
});
connect(ui.button_Connect, &QPushButton::clicked, [=]() {
QString IP = ui.lineEdit_IP->text();
quint16 port = ui.lineEdit_Port->text().toInt();
ptcpSocket->connectToHost(IP, port);
});
}
QtClient::~QtClient()
{
}