• 售前

  • 售后

热门帖子
入门百科

Qt学习(八):QT中TCP传输文件

[复制链接]
FREEDOM326 显示全部楼层 发表于 2022-1-16 16:26:55 |阅读模式 打印 上一主题 下一主题
知识点



  • 服务端与客户端的通讯
  • 文件读写
  • 文件窗口QFileDialog
  • QString字符串的切分section
  • 每次只发送4比特数据巨细
  • 先发送文件信息,再传数据,防止TCP黏包 QTimer利用
   总结:出了一个非常粗心的bug:在h内里声明的变量,特别是int范例的,刚开始要举行初始化,好比sendSize += len; len是整型数据,终极sendSize是即是一个非常大的数据,我的明确是一个地点,地点+整型len,lsendSize在h文件声明确,但在cpp文件没有初始化造成的。
  完备项目github地点:
  1. https://github.com/taw19960426/Qt_study/tree/main/QTcpFile
复制代码
结果演示


流程图


tcpserverwidget.cpp

[code]#include "tcpserverwidget.h"#include "ui_tcpserverwidget.h"#include #include #include #define cout qDebug() listen(QHostAddress::Any,8888);    connect(tcpServer,&QTcpServer::newConnection,            [=](){                    //取出创建好毗连的套接字                    tcpSocket=tcpServer->nextPendingConnection();                    //获取对方的IP和端口                    QString ip=tcpSocket->peerAddress().toString();                    qint16 port =tcpSocket->peerPort();                    QString ipDate=QString("[ip=%1 port=%2] 创建好毗连了!!").arg(ip).arg(port);                    ui->textEdit->append(ipDate);                    ui->buttonFile->setEnabled(true);                }            );    myTimer=new QTimer(this);    connect(myTimer,&QTimer::timeout,                [=](){                         //关闭定时器                         myTimer->stop();                         //发送文件                         sendDate();                    }                );}TcpServerWidget::~TcpServerWidget(){    delete ui;}//打开文件 获取文件的根本信息void TcpServerWidget::on_buttonFile_clicked(){    QString filePath = QFileDialog::getOpenFileName(                                    this,tr("Open File"),"../"                                    );    //cout

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作