qudpsocket 在不使用QDataStream的情况下传递接收结构体
时间: 2024-02-11 15:05:35 浏览: 121
QT Qudpsocket 传送结构体数据
3星 · 编辑精心推荐
如果您不想使用 QDataStream,可以将结构体转换为 QByteArray,并使用 QUdpSocket 传递和接收该 QByteArray。例如:
```
struct MyStruct {
int id;
QString name;
};
// 在发送端,将结构体转换为 QByteArray 并发送
MyStruct myStruct;
myStruct.id = 123;
myStruct.name = "example";
QByteArray data(reinterpret_cast<char*>(&myStruct), sizeof(MyStruct));
udpSocket->writeDatagram(data, data.size(), QHostAddress::LocalHost, 1234);
// 在接收端,接收 QByteArray 并将其转换回结构体
QByteArray data;
data.resize(udpSocket->pendingDatagramSize());
udpSocket->readDatagram(data.data(), data.size());
MyStruct myStruct;
std::memcpy(&myStruct, data.constData(), sizeof(MyStruct));
```
请注意,这种方法要求结构体的成员变量具有相同的内存布局,并且不能跨平台使用。如果您需要在不同平台之间传递结构体,请使用 QDataStream 或手动序列化和反序列化结构体。
阅读全文