Понадобилась функция возвращающая ip шлюза по умолчанию.
После долгого гугления получилось такое:
#include <QtNetwork>
#include "Iphlpapi.h"
............
QString getDefaultGateway(void)
{
union unIPAddr {
struct {
unsigned char p1;
unsigned char p2;
unsigned char p3;
unsigned char p4;
} bIPAddr;
DWORD dwIPAddr;
};
MIB_IPFORWARDROW BestRoute;
DWORD dwResult = GetBestRoute(inet_addr("0.0.0.0"), 0, &BestRoute);
unIPAddr IPAddrF;
IPAddrF.dwIPAddr = BestRoute.dwForwardNextHop;
QString qsDGWIp = QString::number(IPAddrF.bIPAddr.p1) + "." + QString::number(IPAddrF.bIPAddr.p2) + "." + QString::number(IPAddrF.bIPAddr.p3) + "." + QString::number(IPAddrF.bIPAddr.p4) ;
return qsDGWIp;
}
(требует в .pro "LIBS += -liphlpapi")
Это - работает, но очень мне не нравится.
Кто-нибудь знает более правильный и красивый способ?
PS: И да - default gateway может быть не один :(
PPS: Если есть решение под linux - тоже буду очень благодарен