#include #include #include "udpserver.h" UdpServer::UdpServer(int portNumber, QObject *parent) : QObject{parent} { mUdpSocket = new QUdpSocket(this); connect(mUdpSocket, &QUdpSocket::readyRead, this, &UdpServer::readPendingDatagrams); mUdpSocket->bind(QHostAddress::Any, portNumber); } void UdpServer::readPendingDatagrams() { while (mUdpSocket->hasPendingDatagrams()) { QByteArray datagram; datagram.resize(mUdpSocket->pendingDatagramSize()); mUdpSocket->readDatagram(datagram.data(), datagram.size()); QJsonParseError jsonError; QJsonDocument jsonDoc = QJsonDocument::fromJson(datagram, &jsonError); if (jsonError.error != QJsonParseError::NoError) { qWarning() << "Error parsing JSON:" << jsonError.errorString(); continue; } if (jsonDoc.isObject()) { emit newJsonDocument(jsonDoc); } // Test code to see that valid value was in the doc. QJsonObject jsonObj = jsonDoc.object(); if (jsonObj.contains("value") && jsonObj["value"].isDouble()) { int value = jsonObj["value"].toInt(); qDebug() << "Received value:" << value; } else { qWarning() << "Invalid or missing 'value' field in JSON"; } } }