qt 写一个udp 接受json数据的服务器
时间: 2024-05-01 13:16:53 浏览: 151
以下是一个简单的QT UDP接收JSON数据的服务器示例。它将监听指定的端口,并在接收到数据时将其解析为JSON格式,并在控制台上输出。
```cpp
#include <QtCore/QCoreApplication>
#include <QUdpSocket>
#include <QJsonDocument>
#include <QJsonObject>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QUdpSocket udpSocket;
udpSocket.bind(QHostAddress::Any, 1234);
QObject::connect(&udpSocket, &QUdpSocket::readyRead, [&]() {
while (udpSocket.hasPendingDatagrams()) {
QByteArray datagram;
datagram.resize(udpSocket.pendingDatagramSize());
udpSocket.readDatagram(datagram.data(), datagram.size());
QJsonParseError error;
QJsonDocument jsonDoc = QJsonDocument::fromJson(datagram, &error);
if (error.error == QJsonParseError::NoError) {
QJsonObject jsonObj = jsonDoc.object();
qDebug() << "Received JSON data: " << jsonObj;
} else {
qDebug() << "Error parsing JSON data: " << error.errorString();
}
}
});
return a.exec();
}
```
在此示例中,我们首先创建一个QUdpSocket对象并将其绑定到所有可用的IP地址和指定的端口(在此示例中为1234)。我们使用Lambda表达式来定义readyRead信号的槽,该信号在套接字接收到数据时发出。在槽中,我们使用while循环来处理所有挂起的数据报。我们读取数据报并解析为JSON格式。如果解析成功,则我们将其输出到控制台。否则,我们输出错误消息。
注意:此代码示例仅演示了从套接字接收JSON数据并将其解析为QJsonObject。在实际应用中,您需要根据您的需求对代码进行修改和扩展。例如,您可能需要将接收到的数据保存到数据库或将其发送到其他计算机。
阅读全文