Класс QNetworkInterface
Класс QNetworkInterface предоставляет список IP-адресов и сетевых интерфейсов хоста. Подробнее...
| Заголовок: | #include <QNetworkInterface> |
| qmake: | QT += network |
| С версии: | Qt 4.2 |
Примечание: Все функции в этом классе являются перевходящими.
Типы публичного интерфейса
| перечисление | InterfaceFlag { IsUp, IsRunning, CanBroadcast, IsLoopBack, IsPointToPoint, CanMulticast } |
| флаги | InterfaceFlags |
| перечисление | InterfaceType { Unknown, Loopback, Virtual, Ethernet, ..., Ieee1394 } |
Публичные функции
| QNetworkInterface() | |
| QNetworkInterface(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 |
| QNetworkInterface & | operator=(QNetworkInterface &&other) |
| QNetworkInterface & | operator=(const QNetworkInterface &other) |
Статические публичные члены
| 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-адресов и сетевых интерфейсов хоста.
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 |
сетевой интерфейс является интерфейсом обратной связи (loopback): то есть это виртуальный интерфейс, чьей целью является сам хост-компьютер |
QNetworkInterface::IsPointToPoint |
0x10 |
сетевой интерфейс является точечно-точечным интерфейсом: то есть существует один единственный другой адрес, который может быть непосредственно достигнут им. |
QNetworkInterface::CanMulticast |
0x20 |
сетевой интерфейс поддерживает мультимедиавещание |
Обратите внимание, что один сетевой интерфейс не может быть одновременно и широковещательным, и точечно-точечным.
Тип InterfaceFlags является typedef для QFlags<InterfaceFlag>. Он хранит комбинацию значений InterfaceFlag.
перечисление QNetworkInterface::InterfaceType
Указывает тип аппаратного обеспечения (физический уровень, уровень OSI 1) этого интерфейса, если он может быть определен. Типы интерфейсов, которые не входят в список ниже, обычно будут перечислены как 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 по сетям низкоскоростных беспроводных сетей персональных устройств), которые работают на PHY IEEE 802.15.4, но имеют специальные схемы сжатия заголовков для IPv6 и UDP. Этот тип интерфейса часто используется в сетях с меш-архитектурой. |
QNetworkInterface::Ieee80216 |
12 |
Беспроводные интерфейсы городских сетей IEEE 802.16, также известные под коммерческим названием «WiMAX». |
QNetworkInterface::Ieee1394 |
13 |
Интерфейсы IEEE 1394 (также известные как «FireWire»). |
Документация по членам-функциям
QNetworkInterface::QNetworkInterface()
Создаёт пустой объект сетевого интерфейса.
QNetworkInterface::QNetworkInterface(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» и т. д.).
[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.
Максимальный размер пакета — это наибольший пакет, который может быть отправлен по этому интерфейсу без фрагментации на уровне канала связи. Приложения могут использовать это значение для расчёта размера полезной нагрузки, который поместится в нефрагментированный 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().
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.11/qnetworkinterface.html