#include "idserver.h" idServer::idServer(uint16_t sn, QObject *parent) : QObject{parent}, _socket(new QUdpSocket()), _addresses(new QList()), _sn(sn) { _socket = new QUdpSocket(); QObject::connect(_socket, &QUdpSocket::readyRead, [=] { _processData(_socket->receiveDatagram()); }); foreach(auto __if, QNetworkInterface::allInterfaces()) { foreach(auto __addressEntry, __if.addressEntries()) { bool __isIPv4 = false; __addressEntry.ip().toIPv4Address(&__isIPv4); if (__isIPv4) { _addresses->append(__addressEntry.broadcast()); } } } } void idServer::sendIdRequest() { foreach(auto __address, *_addresses) { _socket->writeDatagram(stpClient::packIdSnRequest(_sn), __address, 7000); } } void idServer::_processData(QNetworkDatagram dg) { QByteArray __data = dg.data(); if (__data.size() < CONST_HEADER_SIZE) return; trans_ns::bytes2word __size; __size.bytes.L = __data[1]; __size.bytes.H = __data[2]; if (__data[0] == stpProtocol_ns::packetType::DATA) { if (uint8_t(__data[3]) == uint8_t(stpProtocol_ns::stpCommand::ID) && (__size.word == 5)) { { trans_ns::bytes2word __model; __model.bytes.L = __data[4]; __model.bytes.H = __data[5]; trans_ns::bytes2word __sn; __sn.bytes.L = __data[6]; __sn.bytes.H = __data[7]; emit newIdMessage(__model.word, __sn.word, dg.senderAddress()); } } } }