qudpsocket不要使用 QByteArray等动态结构,而是老实的用C的指针接口,写一个demo
时间: 2024-02-25 09:59:49 浏览: 28
好的,下面是一个简单的使用C的指针接口的QUdpSocket demo:
```c++
#include <QUdpSocket>
#include <QHostAddress>
#include <QString>
#include <iostream>
int main(int argc, char *argv[]) {
// 创建QUdpSocket对象
QUdpSocket udpSocket;
// 绑定本地地址和端口
udpSocket.bind(QHostAddress::LocalHost, 8888);
// 定义接收缓冲区
char recvBuf[1024];
while (true) {
// 接收数据报文
qint64 n = udpSocket.readDatagram(recvBuf, sizeof(recvBuf));
if (n > 0) {
// 将接收到的数据转化为QString类型
QString recvData = QString::fromLocal8Bit(recvBuf, n);
// 输出接收到的数据
std::cout << recvData.toStdString() << std::endl;
// 发送数据报文
QString sendData = "Hello World!";
qint64 m = udpSocket.writeDatagram(sendData.toLocal8Bit().data(), sendData.toLocal8Bit().length(), QHostAddress::LocalHost, 9999);
if (m == -1) {
std::cerr << "Failed to send data!" << std::endl;
}
}
}
return 0;
}
```
该demo中使用了指针接口读取和发送数据,避免了使用QByteArray等动态结构。同时也演示了如何将接收到的数据转化为QString类型输出,并将QString类型的数据转化为const char*类型发送。需要注意的是,使用指针接口需要手动管理内存,要确保不会发生内存泄漏等问题。