jiu__yi |
2019-10-21 21:47 |
为什么我的客户端只能接受一次数据
#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);
}
|
|