Spec-Zone.ru › Qt

Класс QNetworkInterface

Класс QNetworkInterface предоставляет список IP-адресов и сетевых интерфейсов хоста. Подробнее...

Заголовок: #include <QNetworkInterface>
CMake: find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются реентерабельными.

Типы публичного доступа

перечисление InterfaceFlag { IsUp, IsRunning, CanBroadcast, IsLoopBack, IsPointToPoint, CanMulticast }
флаги InterfaceFlags
перечисление InterfaceType { Unknown, Loopback, Virtual, Ethernet, Wifi, …, Ieee1394 }

Функции публичного доступа

QNetworkInterface(const QNetworkInterface &other)
QNetworkInterface()
QNetworkInterface & operator=(const QNetworkInterface &other)
~QNetworkInterface()
QList<QNetworkAddressEntry> addressEntries() const
QNetworkInterface::InterfaceFlags flags() const
QString hardwareAddress() const
QString humanReadableName() const
int index() const
bool isValid() const
int maximumTransmissionUnit() const
QString name() const
void swap(QNetworkInterface &other)
QNetworkInterface::InterfaceType type() const

Статические члены публичного доступа

QList<QHostAddress> allAddresses()
QList<QNetworkInterface> allInterfaces()
QNetworkInterface interfaceFromIndex(int index)
QNetworkInterface interfaceFromName(const QString &name)
int interfaceIndexFromName(const QString &name)
QString interfaceNameFromIndex(int index)

Связанные нечлены

QDebug operator<<(QDebug debug, const QNetworkInterface &networkInterface)

Подробное описание

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, объединённых оператором OR.

перечисление QNetworkInterface::InterfaceType

Определяет тип аппаратного обеспечения (физический уровень, уровень 1 модели OSI), если он может быть определен. Интерфейсы, типы которых не указаны ниже, как правило, будут перечислены как Unknown, хотя в будущих версиях Qt могут быть добавлены новые значения перечисления.

Возможные значения:

Постоянная Значение Описание
QNetworkInterface::Unknown 0 Тип интерфейса не был определён или не относится к другим перечисленным типам.
QNetworkInterface::Loopback 1 Виртуальный интерфейс обратной связи, которому присвоены адреса обратной связи (127.0.0.1, ::1).
QNetworkInterface::Virtual 2 Тип интерфейса, определённый как виртуальный, но не относящийся к другим возможным типам. Например, туннельные интерфейсы (в настоящее время) обнаруживаются как виртуальные.
QNetworkInterface::Ethernet 3 Интерфейсы Ethernet IEEE 802.3, хотя на многих системах могут обнаруживаться и другие типы интерфейсов IEEE 802, которые также классифицируются как Ethernet (особенно Wi-Fi).
QNetworkInterface::Wifi 8 Интерфейсы Wi-Fi IEEE 802.11. Обратите внимание, что на некоторых системах QNetworkInterface может не различать обычный Ethernet и Wi-Fi и не вернёт это значение перечисления.
QNetworkInterface::Ieee80211 Wifi Псевдоним для Wi-Fi.
QNetworkInterface::CanBus 5 Интерфейсы шины Controller Area Network ISO 11898, обычно встречающиеся в автомобильных системах.
QNetworkInterface::Fddi 7 Интерфейсы ANSI X3T12 Fiber Distributed Data Interface, локальная сеть по оптоволокну.
QNetworkInterface::Ppp 6 Интерфейсы Point-to-Point Protocol, устанавливающие прямое соединение между двумя узлами через нижний транспортный уровень (часто последовательный по радио или физической линии).
QNetworkInterface::Slip 4 Интерфейсы Serial Line Internet Protocol.
QNetworkInterface::Phonet 9 Интерфейсы, использующие семейство сокетов Linux Phonet, для связи с модемными устройствами. Подробнее см. в документации ядра Linux.
QNetworkInterface::Ieee802154 10 Интерфейсы беспроводной локальной сети IEEE 802.15.4, отличные от 6LoWPAN (см. ниже).
QNetworkInterface::SixLoWPAN 11 Интерфейсы 6LoWPAN (IPv6 по беспроводным сетям с низким энергопотреблением) работают на физическом уровне IEEE 802.15.4, но имеют особые схемы сжатия заголовков для IPv6 и UDP. Этот тип интерфейса часто используется для сетей "mesh".
QNetworkInterface::Ieee80216 12 Беспроводная городская сеть IEEE 802.16, также известная под коммерческим названием "WiMAX".
QNetworkInterface::Ieee1394 13 Интерфейсы IEEE 1394 (также известные как "FireWire").

Документация по функциям-членам

QNetworkInterface::QNetworkInterface(const QNetworkInterface &other)

Создаёт копию объекта QNetworkInterface, содержащегося в other.

QNetworkInterface::QNetworkInterface()

Конструирует пустой объект сетевого интерфейса.

QNetworkInterface &QNetworkInterface::operator=(const QNetworkInterface &other)

Копирует содержимое объекта QNetworkInterface, содержащегося в other, в этот.

QNetworkInterface::~QNetworkInterface()

Освобождает ресурсы, связанные с объектом QNetworkInterface.

QList<QNetworkAddressEntry> QNetworkInterface::addressEntries() const

Возвращает список IP-адресов, которыми обладает этот интерфейс, вместе с соответствующими масками сети и адресами широковещательной рассылки.

Если маска сети, адрес широковещательной рассылки или другая информация не требуется, вы можете вызвать функцию allAddresses(), чтобы получить только IP-адреса активных интерфейсов.

[static] QList<QHostAddress> QNetworkInterface::allAddresses()

Эта вспомогательная функция возвращает все IP-адреса, найденные на компьютере. Она эквивалентна вызову addressEntries() для всех объектов, возвращённых allInterfaces(), которые находятся в состоянии QNetworkInterface::IsUp, для получения списков объектов QNetworkAddressEntry, а затем вызову QNetworkAddressEntry::ip() для каждого из них.

[static] QList<QNetworkInterface> QNetworkInterface::allInterfaces()

Возвращает список всех сетевых интерфейсов, найденных на компьютере. В случае ошибки возвращает список с нулевыми элементами.

QNetworkInterface::InterfaceFlags QNetworkInterface::flags() const

Возвращает флаги, связанные с этим сетевым интерфейсом.

QString QNetworkInterface::hardwareAddress() const

Возвращает низкоуровневый аппаратный адрес этого интерфейса. Для интерфейсов Ethernet это будет MAC-адрес в строковом представлении, разделённый двоеточиями.

Другие типы интерфейсов могут иметь другие типы аппаратных адресов. Реализации не должны зависеть от того, что эта функция возвращает действительный MAC-адрес.

См. также type().

QString QNetworkInterface::humanReadableName() const

Возвращает удобочитаемое имя этого сетевого интерфейса в Windows, например, "Подключение к локальной сети", если имя можно определить. Если нет, эта функция возвращает то же, что и name(). Удобочитаемое имя — это имя, которое пользователь может изменить в панели управления Windows, поэтому оно может измениться во время выполнения программы.

В Unix эта функция в настоящее время всегда возвращает то же, что и name(), так как системы Unix не хранят конфигурацию для удобочитаемых имён.

int QNetworkInterface::index() const

Возвращает системный индекс интерфейса, если он известен. Это целое число, присваиваемое операционной системой для идентификации этого интерфейса, и оно обычно не меняется. Соответствует полю scope ID в IPv6-адресах.

Если индекс неизвестен, эта функция возвращает 0.

[static] QNetworkInterface QNetworkInterface::interfaceFromIndex(int index)

Возвращает объект QNetworkInterface для интерфейса с внутренним идентификатором index. Сетевые интерфейсы имеют уникальный идентификатор, называемый "индексом интерфейса", для различения его от других интерфейсов в системе. Часто это значение назначается последовательно, и интерфейсы, удаляемые и затем добавляемые вновь, каждый раз получают другое значение.

Этот индекс также встречается в поле scope ID адреса IPv6.

[static] QNetworkInterface QNetworkInterface::interfaceFromName(const QString &name)

Возвращает объект QNetworkInterface для интерфейса с именем name. Если такого интерфейса не существует, эта функция возвращает недопустимый объект QNetworkInterface.

Строка name может быть как фактическим именем интерфейса (например, "eth0" или "en1"), так и индексом интерфейса в строковом формате ("1", "2" и т. д.).

См. также name() и isValid().

[static, since 5.7] int QNetworkInterface::interfaceIndexFromName(const QString &name)

Возвращает индекс интерфейса с именем name или 0, если интерфейса с таким именем нет. Эта функция должна давать тот же результат, что и следующий код, но, вероятно, будет выполняться быстрее.

    QNetworkInterface::interfaceFromName(name).index()

Эта функция была добавлена в Qt 5.7.

См. также interfaceFromName(), interfaceNameFromIndex() и QNetworkDatagram::interfaceIndex().

[static, since 5.7] QString QNetworkInterface::interfaceNameFromIndex(int index)

Возвращает имя интерфейса с индексом index или пустую строку, если интерфейса с таким индексом нет. Эта функция должна давать тот же результат, что и следующий код, но, вероятно, будет выполняться быстрее.

    QNetworkInterface::interfaceFromIndex(index).name()

Эта функция была добавлена в Qt 5.7.

См. также interfaceFromIndex(), interfaceIndexFromName(), и QNetworkDatagram::interfaceIndex().

bool QNetworkInterface::isValid() const

Возвращает true если этот объект QNetworkInterface содержит действительные данные о сетевом интерфейсе.

[since 5.11] int QNetworkInterface::maximumTransmissionUnit() const

Возвращает максимальный размер пакета (MTU) на этом интерфейсе, если известен, в противном случае возвращает 0.

Максимальный размер пакета — это максимальный размер пакета, который может быть отправлен на этот интерфейс без фрагментации на уровне канала связи. Приложения могут использовать это значение для расчёта размера полезной нагрузки, который поместится в непофрагментированный UDP-датаграмму. Не забудьте вычесть размеры заголовков, используемых в вашей коммуникации через интерфейс, например TCP (20 байт) или UDP (12), IPv4 (20) или IPv6 (40, если отсутствует какая-либо форма сжатия заголовков), при расчете, насколько большая полезная нагрузка может быть передана. Также обратите внимание, что MTU по всему пути (MTU пути) до пункта назначения может быть меньше, чем MTU интерфейса.

Эта функция была введена в Qt 5.11.

См. также QUdpSocket.

QString QNetworkInterface::name() const

Возвращает имя этого сетевого интерфейса. В системах Unix это строка, содержащая тип интерфейса и, необязательно, порядковый номер, например, "eth0", "lo" или "pcn0". В Windows это внутренний идентификатор, который пользователь не может изменить.

[since 5.0] void QNetworkInterface::swap(QNetworkInterface &other)

Меняет местами экземпляры сетевого интерфейса с other. Эта функция очень быстрая и никогда не терпит неудачу.

Эта функция была введена в Qt 5.0.

[since 5.11] QNetworkInterface::InterfaceType QNetworkInterface::type() const

Возвращает тип этого интерфейса, если он может быть определен. Если его невозможно определить, эта функция возвращает QNetworkInterface::Unknown.

Эта функция была введена в Qt 5.11.

См. также hardwareAddress().

Связанные нечлены

QDebug operator<<(QDebug debug, const QNetworkInterface &networkInterface)

Записывает QNetworkInterface networkInterface в поток и возвращает ссылку на поток debug.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qnetworkinterface.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API