#include "clientwidget.h"
#include "ui_clientwidget.h"
#include <QDebug>
#include <QMessageBox>
#include <QHostAddress>
ClientWidget::ClientWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::ClientWidget)
{
ui->setupUi(this);
tcpSocket =new QTcpSocket(this);
isStart=true;
connect(tcpSocket,&QTcpSocket::readyRead,
[=]()
{
//取出接受的内容
QByteArray buf= tcpSocket->readAll();
if(true==isStart )
{//接收头
isStart=false;
//解析头部信息 QString buf="hello##1024"
//QString str="hello##1024";
//str.section("##",0,0)以##间隔开,第零行开始,第零行结束
//初始化
fileName =QString(buf).section("##",0,0);
fileSize= QString(buf).section("##",1,1).toInt();
recvSize = 0;
//打开文件
file.setFileName(fileName);
bool isOK=file.open(QIODevice::WriteOnly);
if(false==isOK)
{
qDebug()<<"WriteOnly error 38";
}
}
else //文件信息
{
qint64 len= file.write(buf);
recvSize+=len;
if(recvSize==fileSize)
{
file.close();
QMessageBox::information(this,"完成","文件接收完成");
}
}
}
);
}
ClientWidget::~ClientWidget()
{
delete ui;
}
void ClientWidget::on_buttonconnect_clicked()
{
//获取服务器ip和端口
QString ip=ui->lineEditIP->text();
qint16 port=ui->lineEditPort->text().toInt();
//主动和服务器建立连接
tcpSocket->connectToHost(QHostAddress(ip),port);
}