• 1837阅读
  • 2回复

[讨论]为什么我的客户端只能接受一次数据 [复制链接]

上一主题 下一主题
离线jiu__yi
 

只看楼主 倒序阅读 楼主  发表于: 2019-10-21

#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);

}
在线liulin188

只看该作者 1楼 发表于: 2019-10-22
tcp是数据流,你必须自己定义应用层的包结束标志。
https://wiki.qt.io/Qt_5.12_Release
https://wiki.qt.io/New_Features_in_Qt_5.12
https://wiki.qt.io/Qt_5.12.0_Known_Issues
https://www.qt.io/blog/qt-5.13.2-released
https://www.qt.io/blog/qt-creator-4.10.2-released
https://wiki.qt.io/Qt_5.12_Tools_and_Versions
离线jiu__yi

只看该作者 2楼 发表于: 2019-10-22
大佬,能到说详细点吗,不太明白
快速回复
限100 字节
 
上一个 下一个