【笔记】QT分块传输文件 【memecpy(array.data(),total_array.data(),LOADSIZE)】报错崩溃

这里本来想用tcpsocket实际试验一下,不过后来发现这样还要再写个服务器有点麻烦,这里直接验证利用QBtyteArrary分小块array发,对方收到后一直append到recv_arrary里,最后可以还原文件,已经验证jpg,xlsx都可以,注意小块的array也用append添加内容,而不可以用memecpy(array.data(),total_array.data(),LOADSIZE),memcpy最前面那个目标地址不可以写array.data(),不过第二个参数源地址可以,比如memcpy((char*)&msg,array.data()+sizeof(packHead),array.size()-sizeof(packHead));,如果是array还是用append,就会自动加到这个array的data部分了,在每次循环里都是一个新的QByteArray array;不需要array.clear(),出了花括号作用域自己就回收了。

#include "widget.h"
#include "ui_widget.h"
#include <QApplication>
#include <QDebug>
#include <QHostAddress>
#include <QByteArray>
#include <QFile>
#define LOADSIZE 500

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    QHostAddress *serverIP;
    serverIP = new QHostAddress();
    QString ip = "127.0.0.1";
    int port = 8888;
    if(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值