@anikavoi

Как получить default gateway?

Понадобилась функция возвращающая 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 - тоже буду очень благодарен
  • Вопрос задан
  • 462 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы