Spec-Zone.ru › Qt 5.13

Класс QNetworkInterface

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

Заголовок: #include <QNetworkInterface>
qmake: QT += network
С момента: Qt 4.2

Этот класс был представлен в Qt 4.2.

  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются повторно входящими.

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

Перечисление InterfaceFlag { Активен, Работает, Может использовать широковещание, Это петлевой интерфейс, Точка-точка, Поддерживает мультикаст }
флаги InterfaceFlags
Перечисление InterfaceType { Неизвестно, Петлевой, Виртуальный, Ethernet, ..., 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)

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

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 является псевдонимом для QFlags<InterfaceFlag>. Он хранит логическое ИЛИ из значений InterfaceFlag.

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

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

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

Константа Значение Описание
QNetworkInterface::Unknown 0 Тип интерфейса не может быть определен или не соответствует ни одному из перечисленных типов.
QNetworkInterface::Loopback 1 Виртуальный интерфейс обратной связи, которому назначены IP-адреса обратной связи (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, устанавливающие прямое соединение между двумя узлами через транспортный уровень более низкого уровня (часто последовательный по радиоканалу или физической линии).
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. Этот тип интерфейса часто используется для построения меш-сетей.
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 не хранят конфигурацию для удобочитаемых имён.

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

int QNetworkInterface::index() const

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

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

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

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

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

Этот индекс также можно найти в поле ID области IPv6-адреса.

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

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

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

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

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

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

    QNetworkInterface::interfaceFromName(name).index()

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

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

[static] QString QNetworkInterface::interfaceNameFromIndex(int index)

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

    QNetworkInterface::interfaceFromIndex(index).name()

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

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

bool QNetworkInterface::isValid() const

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

int QNetworkInterface::maximumTransmissionUnit() const

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

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

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

См. также QUdpSocket.

QString QNetworkInterface::name() const

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

void QNetworkInterface::swap(QNetworkInterface &other)

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

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

QNetworkInterface::InterfaceType QNetworkInterface::type() const

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

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

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

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

Spec-Zone.ru

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