Russian Qt Forum

Qt => Работа с сетью => Тема начата: INZER от Август 15, 2016, 16:13



Название: Локальный IP
Отправлено: INZER от Август 15, 2016, 16:13
Как узнать локальный IP адрес машины?

Код:
QList< QHostAddress > addresses = QHostInfo::fromName(QHostInfo::localHostName()).addresses();

Возвращает только 127.0.0.1

Хотя на eth0 поднят еще один IP....
Заранее спасибо


Название: Re: Локальный IP
Отправлено: Old от Август 15, 2016, 17:33
QList<QHostAddress> QHostInfo::addresses() const


Название: Re: Локальный IP
Отправлено: INZER от Август 16, 2016, 08:38
QList<QHostAddress> QHostInfo::addresses() const

В таком случае возвращает пустой QList


PS:  на Windows все хорошо


Название: Re: Локальный IP
Отправлено: Old от Август 16, 2016, 10:02
В таком случае возвращает пустой QList
Сорри, не то вставил. :)

QList<QNetworkInterface> QNetworkInterface::allInterfaces()
QList<QHostAddress> QNetworkInterface::allAddresses()


Название: Re: Локальный IP
Отправлено: Vladimir от Август 22, 2016, 00:03
Код:
void slGetListLocalIP(QStringList &listIP)
{
    listIP.clear();
    QList<QHostAddress> listAddr = QNetworkInterface::allAddresses();
    for(int i = 0; i < listAddr.size(); i++)
    {
       if(listAddr.at(i).protocol() == QAbstractSocket::IPv4Protocol )
       {
           QString ip = listAddr.at(i).toString();
           listIP.append(ip);
       }
    }
}


Название: Re: Локальный IP
Отправлено: gil9red от Август 22, 2016, 08:12
Код:
void slGetListLocalIP(QStringList &listIP)
{
    listIP.clear();
    QList<QHostAddress> listAddr = QNetworkInterface::allAddresses();
    for(int i = 0; i < listAddr.size(); i++)
    {
       if(listAddr.at(i).protocol() == QAbstractSocket::IPv4Protocol )
       {
           QString ip = listAddr.at(i).toString();
           listIP.append(ip);
       }
    }
}

Если в get-функции, тогда мне кажется лучше возвращать список, а не через ссылку в параметре заполнять :)


Название: Re: Локальный IP
Отправлено: Vladimir от Август 23, 2016, 16:22
Согласен! Красивее.. но данные нужно было доставать через сигнал, подключенный к этому слоту!


Название: Re: Локальный IP
Отправлено: gil9red от Август 23, 2016, 16:52
Теперь понятен префикс sl :D