Класс 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) |
Подробное описание
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::InterfaceType
Указывает тип оборудования (PHY-слой, уровень 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, например 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 по беспроводным сетям личных вычислений с низким энергопотреблением), которые работают на PHY 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
Возвращает системный индекс интерфейса, если он известен. Это целое число, назначенное операционной системой для идентификации этого интерфейса, и оно, как правило, не меняется. Оно соответствует полю идентификатора области в IPv6-адресах.
Если индекс неизвестен, эта функция возвращает 0.
[static] QNetworkInterface QNetworkInterface::interfaceFromIndex(int index)
Возвращает объект QNetworkInterface для интерфейса, внутренний идентификатор которого равен index. Сетевые интерфейсы имеют уникальный идентификатор, называемый "индексом интерфейса", для отличия от других интерфейсов в системе. Часто это значение назначается последовательно, а удалённые и вновь добавленные интерфейсы каждый раз получают другое значение.
Этот индекс также можно найти в поле идентификатора области IPv6-адреса.
[static] QNetworkInterface QNetworkInterface::interfaceFromName(const QString &name)
Возвращает объект QNetworkInterface для интерфейса с именем name. Если такого интерфейса не существует, эта функция возвращает недопустимый объект QNetworkInterface.
Строка name может быть либо фактическим именем интерфейса (таким как "eth0" или "en1"), либо индексом интерфейса в строковом формате ("1", "2" и т. д.).
[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 по всему пути (Path 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().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qnetworkinterface.html