dataHeader dhead;
QByteArray headBuffer,sendBuffer,dataBuffer;
dhead.cmd = ret.cmd;
dhead.datalength = ret.datalength;
headBuffer.resize(sizeof(dataHeader));
sendBuffer.resize(sizeof(ShowPersonResult));
dataBuffer.resize(4096);
memcpy(headBuffer.data(),&dhead,sizeof(dataHeader));
memcpy(sendBuffer.data(),&ret,sizeof(ShowPersonResult));
tcpSocket->write(headBuffer);
tcpSocket->write(sendBuffer);
timer.start(20);
long long datalen_temp = ret.datalen;
long long sended_len = 0;
while (datalen_temp) {
if(datalen_temp>=4096)
{
Student *ts = ret.vStudent+sended_len;
memcpy(dataBuffer.data(),ts,4096);
tcpSocket->write(dataBuffer.data());
datalen_temp -= 4096;
sended_len += 4096;
}
else
{
memcpy(dataBuffer.data(),ret.vStudent+sended_len,datalen_temp);
tcpSocket->write(dataBuffer.data()+sended_len,datalen_temp);
datalen_temp = 0;
}
}
ui->ReadEdit->append("以发送`查看所有老师或学生用户`结果");
}

https://blog.csdn.net/u013352076/article/details/102824169