class QNetworkInterface#

《QNetworkInterface》类提供主机IP地址和网络接口列表。《QNetworkInterface更多...

概述#

方法#

静态函数#

注意:

此文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译有问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述#

QNetworkInterface 表示运行程序的宿主机上的一个网络接口。每个网络接口可能包含零个或多个IP地址,每个IP地址可以与子网掩码和/或广播地址关联。可以通过 addressEntries() 获取这种三元组的列表。或者,当不需要子网掩码、广播地址或其他信息时,可以使用 allAddresses() 便捷函数仅获取活动接口的IP地址。

QNetworkInterface 还通过 hardwareAddress() 报告接口的硬件地址。

并非所有操作系统都支持报告所有功能。该类保证在所有平台上列出IPv4地址。特别是,IPv6地址的列出仅支持Windows、Linux、macOS和BSD。

另请参阅

QNetworkAddressEntry

class InterfaceFlag#

(继承自 enum.Flag) 指定与该网络接口关联的标志。可能的值包括

常量

描述

QNetworkInterface.IsUp

网络接口已“激活”——由管理操作启用

QNetworkInterface.IsRunning

网络接口处于操作状态:配置为“激活”且(通常)物理连接到网络

QNetworkInterface.CanBroadcast

网络接口工作在广播模式

QNetworkInterface.IsLoopBack

网络接口是环回接口:即它是一个目标为主机的虚拟接口

QNetworkInterface.IsPointToPoint

网络接口是点对点接口:也就是说,只有一个单一的其他地址可以直接通过它访问

QNetworkInterface.CanMulticast

网络接口支持多播

请注意,一个网络接口不能既基于广播又基于点对点。

class InterfaceType#

指定该接口是硬件类型(物理层,OSI层1),如果可以确定的话。如果接口类型不是以下列出的类型,通常会被列出为未知,尽管Qt的未来版本可能添加新的枚举值。

可能的值包括

常量

描述

QNetworkInterface.Unknown

无法确定接口类型或不是其他列出的类型。

QNetworkInterface.Loopback

虚拟环回接口,分配环回IP地址(127.0.0.1,::1)。

QNetworkInterface.Virtual

一种被确定为虚拟但不是其他可可能性类型的接口。例如,隧道接口(目前)被视为虚拟接口。

QNetworkInterface.Ethernet

IEEE 802.3 以太网接口,尽管在许多系统上,还可能检测到其他类型的IEEE 802接口也表示为以太网(尤其是Wi-Fi)。

QNetworkInterface.Wifi

IEEE 802.11 Wi-Fi 网络接口。注意,在某些系统中,QNetworkInterface 可能无法区分以太网和 Wi-Fi,因此不会返回此枚举值。

QNetworkInterface.Ieee80211

WiFi 的别称。

QNetworkInterface.CanBus

ISO 11898 控制器区域网络总线接口,通常在汽车系统中找到。

QNetworkInterface.Fddi

ANSI X3T12 光纤分布式数据接口,一种在光纤上运行的局域网。

QNetworkInterface.Ppp

点对点协议(PPP)接口,通过较低传输层(通常是无线电或物理线上的串行)在两个节点之间建立直接连接。

QNetworkInterface.Slip

串行线路互联网协议(SLIP)接口。

QNetworkInterface.Phonet

使用 Linux Phonet 套接字家族的接口,用于与蜂窝调制解调器进行通信。有关更多信息,请参阅 Linux 内核文档

QNetworkInterface.Ieee802154

IEEE 802.15.4 个人区域网络接口,除了 6LoWPAN(见下文)。

QNetworkInterface.SixLoWPAN

6LoWPAN(在低功耗无线个人区域网络中运行 IPv6)的接口,在 IEEE 802.15.4 物理层上运行,但具有针对 IPv6 和 UDP 的特定首部压缩方案。此类接口通常用于网状网络。

QNetworkInterface.Ieee80216

IEEE 802.16 无线城域网,也称为商业名称“WiMAX”。

QNetworkInterface.Ieee1394

IEEE 1394 接口(又称“FireWire”)。

__init__(other)#
参数:

otherQNetworkInterface

创建包含在 other 中的 QNetworkInterface 对象的副本。

__init__()

构建一个空的网络接口对象。

addressEntries()#
返回类型:

一个 QNetworkAddressEntry 的列表

返回该接口拥有的 IP 地址列表以及与其相关的子网掩码和广播地址。

如果不需要子网掩码、广播地址或其他信息,您可以调用 allAddresses() 函数以获得活动接口的 IP 地址。

static allAddresses()#
返回类型:

返回类型:一个 QHostAddress 的列表

此便捷函数返回主机的所有IP地址。它等同于调用addressEntries(),该函数遍历allInterfaces()返回的所有对象,并且这些对象处于IsUp状态,然后从这些对象列表中获取QNetworkAddressEntry对象并调用每个对象的ip()方法。

静态 allInterfaces()#
返回类型:

网络接口列表

返回主机上找到的所有网络接口的列表。如果失败,则返回空列表。

flags()#
返回类型:

界面标记的组合

返回与该网络接口相关的标记。

hardwareAddress()#
返回类型:

字符串

返回该接口的底层硬件地址。在以太网接口上,这将是一个用冒号分隔的字符串表示的MAC地址。

其他接口类型可能有其他类型的硬件地址。实现不应依赖于该函数返回有效的MAC地址。

另请参阅

类型标识

humanReadableName()#
返回类型:

字符串

返回Windows上此网络接口的易读名称,例如“本地连接”,如果可以确定名称,则返回。如果无法确定,则此函数返回与name()相同的值。易读名称是用户可以在Windows控制面板中修改的名称,因此它可能在程序执行期间更改。

在Unix上,此函数当前始终返回与name()相同的值,因为Unix系统不存储易读名称的配置。

index()#
返回类型:

整数

如果知道,返回界面系统索引。这是操作系统分配的整数,用于识别此接口,通常不会更改。它与IPv6地址的作用域ID字段相匹配。

如果索引未知,此函数返回0。

interfaceFromIndex(index)#
参数:

index – int

返回类型:

QNetworkInterface

返回一个表示内部标识为 index 的接口的 QNetworkInterface 对象。网络接口有一个唯一的标识符,称为“接口索引”,以区分系统上的其他接口。通常,此值会递增分配,并且移除并重新添加的接口在每个时间都会得到不同的值。

此索引也出现在 IPv6 地址的作用域 ID 字段中。

static interfaceFromName(name)#
参数:

name – str

返回类型:

QNetworkInterface

返回一个名为 name 的接口的 QNetworkInterface 对象。如果不存在此类接口,此函数将返回一个无效的 QNetworkInterface 对象。

name 字符串可以是实际的接口名称(例如“eth0”或“en1”)或字符串形式的接口索引(“1”,“2”等)。

另请参阅

name() isValid()

static interfaceIndexFromName(name)#
参数:

name – str

返回类型:

整数

警告

本节包含自动从 C++ 转换为 Python 的代码片段,可能包含错误。

返回名称为 name 的接口的索引或 0,如果不存在该名称的接口。此函数应生成与以下代码相同的输出,但可能执行得更快。

QNetworkInterface.interfaceFromName(name).index()
static interfaceNameFromIndex(index)#
参数:

index – int

返回类型:

字符串

警告

本节包含自动从 C++ 转换为 Python 的代码片段,可能包含错误。

返回索引为 index 的接口的名称,如果不存在该索引的接口,则返回空字符串。此函数应生成与以下代码相同的输出,但可能执行得更快。

QNetworkInterface.interfaceFromIndex(index).name()
isValid()#
返回类型:

bool

如果此 QNetworkInterface 对象包含关于网络接口的有效信息,则返回 true

maximumTransmissionUnit()#
返回类型:

整数

如果在已知的情况下返回此接口上的最大传输单元,否则返回 0。

最大传输单元是指在不引起链路层分片的情况下可以发送到该接口的最大数据包。应用程序可以使用此值来计算合适的未分片 UDP 数据报文负载大小。请注意,在计算可以传输的负载大小时,要减去您在接口上使用的头部长度的大小,例如 TCP(20 字节)或 UDP(12 字节),IPv4(20 字节)或 IPv6(40 字节,除非采用某些形式的头部压缩),也要注意目的地整个路径(路径 MTU)上的 MTU 可能小于接口的 MTU。

另请参阅

QUdpSocket

name()#
返回类型:

字符串

返回此网络接口的名称。在类 Unix 系统上,这是一个包含接口类型和可选序列号的字符串,例如 “eth0”,“lo” 或 “pcn0”。在 Windows 上,它是用户无法更改的内部 ID。

swap(other)#
参数:

otherQNetworkInterface

将此网络接口实例与 other 交换。此函数非常快且从不失败。

type()#
返回类型:

InterfaceType

如果可以确定,则返回此接口的类型。如果无法确定,此函数返回 Unknown

另请参阅

hardwareAddress()