QT开发中文网

// 构造数据包 QByteArray packet; packet.append(char(0xCD)); // 协议头 QByteArray nameData; QDataStream nameStream(&nameData, QIODevice::WriteOnly); nameStream

首先,在接收端,你需要读取接收到的数据包并将其解析。可以使用类似以下代码的方式:

QByteArray receivedData = ... // 从网络中读取的数据
QDataStream stream(receivedData);
quint8 protocolHeader;
stream >> protocolHeader; // 读取协议头

quint16 nameLength;
stream >> nameLength; // 读取文件名长度
QByteArray nameBytes;
nameBytes.resize(nameLength);
stream.readRawData(nameBytes.data(), nameLength); // 读取文件名字节流
QString fileName = QString::fromUtf8(nameBytes); // 将文件名字节流转换为QString类型

quint32 contentLength;
stream >> contentLength; // 读取内容长度
QByteArray contentBytes;
contentBytes.resize(contentLength);
stream.readRawData(contentBytes.data(), contentLength); // 读取内容字节流

// 然后将内容保存到本地桌面
QString filePath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation) + "/" + fileName;
QFile file(filePath);
if (file.open(QIODevice::WriteOnly)) {
    file.write(contentBytes);
    file.close();
}

上述代码假设你已经从网络中成功地读取了完整的数据包,并且成功地解析出了文件名和内容。其中filePath变量表示要保存到本地桌面的文件路径,该路径以可移植的方式获取(使用QStandardPaths类)。然后使用QFile类打开该文件并将内容写入。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=1907

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?