qudpsocket不要使用 QByteArray等动态结构,而是老实的用C内存分配,写一个demo
时间: 2024-02-25 07:59:50 浏览: 34
好的,下面是一个使用C内存分配的QUdpSocket demo:
```c++
#include <QUdpSocket>
#include <QHostAddress>
#include <QString>
#include <iostream>
#include <cstdlib>
#include <cstring>
int main(int argc, char *argv[]) {
// 创建QUdpSocket对象
QUdpSocket udpSocket;
// 绑定本地地址和端口
udpSocket.bind(QHostAddress::LocalHost, 8888);
// 定义接收缓冲区
char* recvBuf = (char*)malloc(sizeof(char) * 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;
// 发送数据报文
char* sendData = (char*)malloc(sizeof(char) * 1024);
strcpy(sendData, "Hello World!");
qint64 m = udpSocket.writeDatagram(sendData, strlen(sendData), QHostAddress::LocalHost, 9999);
if (m == -1) {
std::cerr << "Failed to send data!" << std::endl;
}
// 释放发送缓冲区内存
free(sendData);
}
}
// 释放接收缓冲区内存
free(recvBuf);
return 0;
}
```
该demo中使用了C内存分配来代替QByteArray等动态结构。同时也演示了如何将接收到的数据转化为QString类型输出,并将const char*类型的数据发送。需要注意的是,使用C内存分配需要手动管理内存,要确保不会发生内存泄漏等问题。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)