Класс QNetworkInterface
Класс QNetworkInterface предоставляет список IP-адресов и сетевых интерфейсов хоста. Подробнее...
| Заголовок: | #include <QNetworkInterface> |
| qmake: | QT += network |
| С момента: | Qt 4.2 |
Примечание: Все функции в этом классе являются реентерабельными.
Типы публичного доступа
| перечисление | InterfaceFlag { IsUp, IsRunning, CanBroadcast, IsLoopBack, IsPointToPoint, CanMulticast } |
| флаги | InterfaceFlags |
Функции публичного доступа
| QNetworkInterface() | |
| QNetworkInterface(const QNetworkInterface &other) | |
| ~QNetworkInterface() | |
| QList<QNetworkAddressEntry> | addressEntries() const |
| InterfaceFlags | flags() const |
| QString | hardwareAddress() const |
| QString | humanReadableName() const |
| int | index() const |
| bool | isValid() const |
| QString | name() const |
| void | swap(QNetworkInterface &other) |
| QNetworkInterface & | operator=(QNetworkInterface &&other) |
| QNetworkInterface & | operator=(const QNetworkInterface &other) |
Статические члены публичного доступа
| QList<QHostAddress> | allAddresses() |
| QList<QNetworkInterface> | allInterfaces() |
| QNetworkInterface | interfaceFromIndex(int index) |
| QNetworkInterface | interfaceFromName(const QString &name) |
Подробное описание
Класс QNetworkInterface предоставляет список IP-адресов и сетевых интерфейсов хоста.
QNetworkInterface представляет один сетевой интерфейс, подключённый к хосту, на котором выполняется программа. Каждый сетевой интерфейс может содержать ноль или более IP-адресов, каждый из которых необязательно связан с маской сети и/или широковещательным адресом. Список таких троек можно получить с помощью addressEntries(). В противном случае, если маска сети или широковещательный адрес не нужны, используйте вспомогательную функцию allAddresses(), чтобы получить только IP-адреса.
QNetworkInterface также сообщает аппаратный адрес интерфейса с помощью hardwareAddress().
Не все операционные системы поддерживают отчёт обо всех функциях. Только IPv4-адреса гарантированно перечислены в этом классе на всех платформах. В частности, перечисление IPv6-адресов поддерживается только в Windows, Linux, macOS и BSD.
См. также QNetworkAddressEntry.
Документация по типам членов
перечисление QNetworkInterface::InterfaceFlagфлаги QNetworkInterface::InterfaceFlags
Определяет флаги, связанные с этим сетевым интерфейсом. Возможные значения:
| Константа | Значение | Описание |
|---|---|---|
QNetworkInterface::IsUp |
0x1 |
сетевой интерфейс активен |
QNetworkInterface::IsRunning |
0x2 |
сетевой интерфейс имеет выделенные ресурсы |
QNetworkInterface::CanBroadcast |
0x4 |
сетевой интерфейс работает в широковещательном режиме |
QNetworkInterface::IsLoopBack |
0x8 |
сетевой интерфейс является интерфейсом обратной связи: это виртуальный интерфейс, чей пункт назначения — сам компьютер |
QNetworkInterface::IsPointToPoint |
0x10 |
сетевой интерфейс — интерфейс точка-точка: то есть, существует только один другой адрес, который может быть непосредственно достигнут по нему. |
QNetworkInterface::CanMulticast |
0x20 |
сетевой интерфейс поддерживает многоадресную рассылку |
Обратите внимание, что один сетевой интерфейс не может быть одновременно и широковещательным, и точечно-точечным.
Тип InterfaceFlags — это typedef для QFlags<InterfaceFlag>. Он хранит логическое ИЛИ комбинацию значений InterfaceFlag.
Документация по функциям членов
QNetworkInterface::QNetworkInterface()
Конструирует пустой объект сетевого интерфейса.
QNetworkInterface::QNetworkInterface(const QNetworkInterface &other)
Создаёт копию объекта QNetworkInterface, содержащегося в other.
QNetworkInterface::~QNetworkInterface()
Освобождает ресурсы, связанные с объектом QNetworkInterface.
QList<QNetworkAddressEntry> QNetworkInterface::addressEntries() const
Возвращает список IP-адресов, имеющихся у этого интерфейса, вместе с ассоциированными масками сети и широковещательными адресами.
Если информация о маске сети или широковещательном адресе не нужна, можно вызвать функцию allAddresses(), чтобы получить только IP-адреса.
QList<QHostAddress> QNetworkInterface::allAddresses()
Эта вспомогательная функция возвращает все IP-адреса, найденные на компьютере. Она эквивалентна вызову addressEntries() для всех объектов, возвращённых allInterfaces(), для получения списков объектов QHostAddress, а затем вызову QHostAddress::ip() для каждого из них.
QList<QNetworkInterface> QNetworkInterface::allInterfaces()
Возвращает список всех сетевых интерфейсов, найденных на хост-машине. В случае сбоя возвращает список с нулём элементов.
InterfaceFlags QNetworkInterface::flags() const
Возвращает флаги, связанные с этим сетевым интерфейсом.
QString QNetworkInterface::hardwareAddress() const
Возвращает низкоуровневый аппаратный адрес для этого интерфейса. Для Ethernet-интерфейсов это будет MAC-адрес в строковом представлении, разделённый двоеточиями.
Другие типы интерфейсов могут иметь другие типы аппаратных адресов. Реализации не должны зависеть от того, что эта функция возвращает корректный MAC-адрес.
QString QNetworkInterface::humanReadableName() const
Возвращает удобочитаемое имя этого сетевого интерфейса в Windows, например, "Подключение к локальной сети", если имя может быть определено. Если нет, эта функция возвращает то же значение, что и name(). Удобочитаемое имя — это имя, которое пользователь может изменить в Панели управления Windows, поэтому оно может изменяться во время выполнения программы.
END_OF_DOCUMENT_MARKERВ Unix данная функция всегда возвращает то же значение, что и name(), так как системы Unix не хранят конфигурацию для имен, понятных человеку.
Данная функция была введена в Qt 4.5.
int QNetworkInterface::index() const
Возвращает системный индекс интерфейса, если он известен. Это целое число, назначенное операционной системой для идентификации этого интерфейса, и оно, как правило, не изменяется. Оно соответствует полю scope ID в адресах IPv6.
Если индекс неизвестен, функция возвращает 0.
Данная функция была введена в Qt 4.5.
[static] QNetworkInterface QNetworkInterface::interfaceFromIndex(int index)
Возвращает объект QNetworkInterface для интерфейса, внутренний ID которого равен index. Сетевые интерфейсы имеют уникальный идентификатор, называемый «индексом интерфейса», чтобы отличить его от других интерфейсов в системе. Часто это значение назначается последовательно, а удаляемые и затем вновь добавляемые интерфейсы получают новое значение каждый раз.
Этот индекс также содержится в поле scope ID адреса IPv6.
[static] QNetworkInterface QNetworkInterface::interfaceFromName(const QString &name)
Возвращает объект QNetworkInterface для интерфейса с именем name. Если такого интерфейса не существует, функция возвращает недействительный объект QNetworkInterface.
Строка name может быть либо фактическим именем интерфейса (например, «eth0» или «en1»), либо индексом интерфейса в строковом формате («1», «2» и т. д.).
bool QNetworkInterface::isValid() const
Возвращает true, если этот объект QNetworkInterface содержит действительную информацию об сетевом интерфейсе.
QString QNetworkInterface::name() const
Возвращает имя этого сетевого интерфейса. В системах Unix это строка, содержащая тип интерфейса и, необязательно, порядковый номер, такой как «eth0», «lo» или «pcn0». В Windows это внутренний ID, который пользователь изменить не может.
void QNetworkInterface::swap(QNetworkInterface &other)
Меняет местами этот экземпляр сетевого интерфейса с other. Эта функция очень быстрая и никогда не завершается с ошибкой.
Данная функция была введена в Qt 5.0.
QNetworkInterface &QNetworkInterface::operator=(QNetworkInterface &&other)
Оператор перемещающей присваивания.
QNetworkInterface &QNetworkInterface::operator=(const QNetworkInterface &other)
Копирует содержимое объекта QNetworkInterface, содержащегося в other, в этот.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qnetworkinterface.html