SXXXXXXX_PyBusMonitor1553/cpp/GrifoScope/QgScope/qgnetworkinterface.cpp
2025-12-17 07:59:30 +01:00

117 lines
2.5 KiB
C++

#include "qgnetworkinterface.h"
#include <QHostInfo>
#include <QNetworkInterface>
#include <QDebug>
static QHostAddress qgHostAddress=QHostAddress::LocalHost;
static QHostAddress qgBroadcastAddress=QHostAddress::LocalHost;
static unsigned int adapter_index;
static QHostAddress selectDefaultInterface()
{
QList<QNetworkInterface> hal=QNetworkInterface::allInterfaces();
if (hal.isEmpty())
{
qDebug()<<"Network Config: NO HOST ADDRESSES";
return QHostAddress();
}
else
{
foreach(QNetworkInterface nif, hal)
{
//QList<QHostAddress> nhal=nif.allAddresses();
QList<QNetworkAddressEntry> nhal=nif.addressEntries();
foreach(QNetworkAddressEntry aentry, nhal)
{
QHostAddress a=aentry.ip();
if (a.toString().startsWith("192.168"))
{
adapter_index=nif.index();
return aentry.ip();
}
}
}
foreach(QNetworkInterface nif, hal)
{
//QList<QHostAddress> nhal=nif.allAddresses();
QList<QNetworkAddressEntry> nhal=nif.addressEntries();
foreach(QNetworkAddressEntry aentry, nhal)
{
QHostAddress a=aentry.ip();
if (a.toString().startsWith("169.254"))
{
adapter_index=nif.index();
return aentry.ip();
}
}
}
return QHostAddress();
}
}
void QgNetworkInterface::setNetworkInterface(const QHostAddress& adr)
{
qgHostAddress=adr;
quint32 ip=adr.toIPv4Address();
if (!adr.isLoopback())
ip|=255;
qgBroadcastAddress=QHostAddress(ip);
qDebug()<<"QgNetworkInterface:"<<adr;
}
QHostAddress QgNetworkInterface::networkInterface()
{
return qgHostAddress;
}
QHostAddress QgNetworkInterface::networkBroadcast()
{
return qgBroadcastAddress;
}
QString QgNetworkInterface::networkIP()
{
return qgHostAddress.toString();
}
void QgNetworkInterface::setNetworkIP(const QString& str)
{
qgHostAddress=QHostAddress(str);
}
unsigned int QgNetworkInterface::networkMTU()
{
return 1536;
}
void QgNetworkInterface::setNetworkMTU(unsigned int)
{
return;
}
unsigned int QgNetworkInterface::networkUdpMTU()
{
return networkMTU()-(20+8);
}
QString QgNetworkInterface::hostName()
{
return QHostInfo::localHostName();
}
unsigned int QgNetworkInterface::adapterIndex()
{
return adapter_index;
}
void QgNetworkInterface::initializeDefaultInterface()
{
setNetworkInterface(selectDefaultInterface());
}