PySide6.QtNetwork.QNetworkDatagram¶
- class QNetworkDatagram¶
QNetworkDatagram类提供了UDP数据报的数据和元数据。更多…概要¶
方法¶
def
__init__()def
clear()def
data()def
hopLimit()def
interfaceIndex()def
isNull()def
isValid()def
makeReply()def
senderAddress()def
senderPort()def
setData()def
setDestination()def
setHopLimit()def
setSender()def
swap()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
QNetworkDatagram可以与QUdpSocket类一起使用,以表示 UDP(用户数据报协议)数据报中包含的完整信息。QNetworkDatagram封装了数据报的以下信息:有效载荷数据;
发送者地址和端口号;
目标地址和端口号;
剩余的跳数限制(在IPv4中,此字段通常称为“生存时间” - TTL);
数据报接收或发送的网络接口索引。
QUdpSocket将尝试在所有操作系统上尽可能匹配常见行为,但在某些操作系统中无法获取上述所有元数据。在使用writeDatagram()发送数据报时无法设置的元数据将被静默丢弃。接收时,
senderAddress()和senderPort()属性包含发送数据报的对等方的地址和端口,而destinationAddress()和destinationPort()包含数据报中的目标地址。这通常是当前机器的本地地址,但也可能是IPv4广播地址(如“255.255.255.255”)或IPv4或IPv6多播地址。应用程序可能会发现确定数据报是通过单播地址专门发送到这台机器还是发送到多个目标地址是有用的。发送时,
senderAddress()和senderPort()应包含发送时要使用的本地地址。发送地址必须是分配给此机器的地址,可以使用QNetworkInterface获取,端口号必须是套接字绑定的端口号。这两个字段中的任何一个都可以留空,操作系统将使用默认值填充。destinationAddress()和destinationPort()字段可以设置为与UDP套接字当前关联的目标地址不同的地址。通常,当发送数据报以回复先前接收到的数据报时,会将
destinationAddress()设置为传入数据报的senderAddress(),端口号也是如此。为了简化这一常见过程,QNetworkDatagram提供了函数makeReply()。hopCount() 函数包含,对于接收到的数据报,数据包的剩余跳数限制。在发送时,它包含要设置的跳数限制。大多数协议会保留此值为默认值,并让操作系统决定使用的最佳值。IPv4 上的多播通常使用此字段来指示多播组的范围(链路本地、组织本地或全局)。
interfaceIndex()函数包含接收数据包的操作系统接口的索引。此值与可以在scopeId()属性上设置的值相同,并且与index()属性匹配。当向全局地址发送数据包时,不需要设置接口索引,因为操作系统将使用系统路由表选择正确的接口。在向链路本地目标发送数据报时,无论是单播还是多播,此属性都很重要。功能支持¶
QNetworkDatagram的一些功能并非在所有操作系统中都受支持。所有系统都支持远程主机的地址和端口(接收数据包中的发送方和发送数据包中的目的地)。在大多数操作系统中,其他功能仅支持IPv6。软件应在运行时检查是否可以确定IPv4地址的其余部分。当前功能支持如下:
操作系统
本地地址
跳数
接口索引
FreeBSD
支持
支持
仅适用于IPv6
Linux
支持
支持
支持
OS X
支持
支持
仅适用于IPv6
支持RFC 3542的其他Unix系统
仅适用于IPv6
仅适用于IPv6
仅适用于IPv6
Windows(桌面版)
支持
支持
支持
Windows RT
不支持
不支持
不支持
- __init__()¶
创建一个没有有效载荷数据和未定义目标地址的
QNetworkDatagram对象。可以通过使用
setData()来修改有效载荷,并且可以使用setDestination()来设置目标地址。如果目标地址未定义,
writeDatagram()将尝试通过使用connectToHost()将数据报发送到最后关联的地址。- __init__(other)
- Parameters:
其他 –
QNetworkDatagram
创建
other数据报的副本,包括有效载荷和元数据。要创建适合在回复中发送的数据报,请使用
makeReply();- __init__(data[, destinationAddress=QHostAddress()[, port=0]])
- Parameters:
data –
QByteArraydestinationAddress –
QHostAddressport – int
创建一个
QNetworkDatagram对象,并将data设置为有效载荷数据,同时将destinationAddress和port设置为数据报的目的地址。- clear()¶
清除此
QNetworkDatagram对象中的有效载荷数据和元数据,将其重置为默认值。- data()¶
- Return type:
返回此数据报的数据负载。对于从网络接收的数据报,它包含数据报的负载。对于要发送的数据报,它是将要发送的数据报。
请注意,数据报可以在没有数据的情况下传输,因此返回的 QByteArray 可能为空。
另请参阅
- destinationAddress()¶
- Return type:
返回与此数据报关联的目标地址。对于从网络接收的数据报,它是对方节点发送数据报的地址,可以是本机的本地地址,也可以是组播或广播地址。对于发出的数据报,它是数据报应发送到的地址。
如果此数据报未设置目标地址,返回的对象将向
isNull()报告为真。- destinationPort()¶
- Return type:
整数
返回与此数据报关联的目标端口号。对于从网络接收的数据报,它是对方节点发送数据报到的本地端口号。对于发出的数据报,它是数据报应发送到的对方端口。
如果没有与此数据报关联的目标地址,此函数返回 -1。
- hopLimit()¶
- Return type:
整数
返回与此数据报关联的跳数限制。跳数限制是指在IP数据包过期并返回错误给数据报发送者之前,允许转发该数据包的节点数量。在IPv4中,此值通常称为“生存时间”(TTL)。
如果此数据报是从网络接收的,则这是接收后数据报的剩余跳数,并且每个转发数据包的节点都会将其减1。值为-1表示无法获取跳数限制。
如果这是一个出站数据报,这是在发送时要在IP头中设置的值。值为-1表示操作系统应选择该值。
另请参阅
- interfaceIndex()¶
- Return type:
整数
返回与此数据报关联的接口索引。接口索引是一个正数,用于唯一标识操作系统中的网络接口。此数字与接口的
index()返回的值匹配。如果此数据报是从网络接收的,这是接收数据包的接口的索引。如果这是一个出站数据报,这是数据报应发送的接口的索引。
值为0表示接口索引未知。
另请参阅
- isNull()¶
- Return type:
布尔
如果这个
QNetworkDatagram对象为空,则返回true。这个函数与isValid()相反。- isValid()¶
- Return type:
布尔
如果此
QNetworkDatagram对象有效,则返回true。有效的QNetworkDatagram对象至少包含一个发送者或接收者地址。有效的数据报可以包含空的负载。- makeReply(payload)¶
- Parameters:
payload –
QByteArray- Return type:
- senderAddress()¶
- Return type:
返回与此数据报关联的发送方地址。对于从网络接收的数据报,它是发送数据报的对等节点的地址。对于出站数据报,它是发送时要使用的本地地址。
如果在此数据报上没有设置发送者地址,返回的对象将报告为
isNull()为真。- senderPort()¶
- Return type:
整数
返回与此数据报关联的发送方的端口号。对于从网络接收的数据报,它是对方节点发送数据报的端口号。对于发出的数据报,它是数据报应发送的本地端口。
如果没有与此数据报关联的发送方地址,此函数返回 -1。
- setData(data)¶
- Parameters:
数据 –
QByteArray
将此数据报的数据负载设置为
data。通常不需要在接收到的数据报上调用此函数。对于发出的数据报,此函数设置要在网络上发送的数据。由于数据报可以为空,因此空的 QByteArray 是
data的有效值。另请参阅
- setDestination(address, port)¶
- Parameters:
地址 –
QHostAddressport – int
设置与此数据报关联的目标地址为
address和端口号port。目标地址和端口号通常在接收时由QUdpSocket设置,因此在接收到的数据报上无需调用此函数。对于出站数据报,此函数可用于设置数据报应发送到的地址。它可以是用于与对等方通信的单播地址,也可以是用于发送到一组设备的广播或多播地址。
- setHopLimit(count)¶
- Parameters:
count – int
设置与此数据报关联的跳数限制为
count。跳数限制是指在IP数据包过期并返回错误给数据报发送者之前,允许转发该数据包的节点数量。在IPv4中,此值通常称为“生存时间”(TTL)。通常不需要对从网络接收的数据报调用此函数。
如果这是一个出站数据包,这是在发送时要在IP头中设置的值。该值的有效范围是1到255。此函数还接受-1的值,表示应由操作系统选择该值。
另请参阅
- setInterfaceIndex(index)¶
- Parameters:
索引 – int
将此数据报关联的接口索引设置为
index。接口索引是一个正数,用于唯一标识操作系统中的网络接口。此数字与接口的index()返回的值匹配。通常不需要对从网络接收的数据报调用此函数。
如果这是一个出站数据包,这是数据报应发送的接口的索引。值为0表示操作系统应根据其他因素选择接口。
请注意,接口索引也可以通过
setScopeId()为IPv6目标地址设置,然后通过setDestination()设置。如果在目标地址中设置的范围ID和index不同且都不为零,则操作系统将在哪个接口上发送数据报是未定义的。- setSender(address[, port=0])¶
- Parameters:
地址 –
QHostAddressport – int
设置与此数据报关联的发送方地址为
address和端口号port。发送方地址和端口号通常在接收时由QUdpSocket设置,因此无需在接收到的数据报上调用此函数。对于传出的数据报,此函数可用于设置数据报应携带的地址。地址
address通常必须是分配给此机器的本地地址之一,可以使用QNetworkInterface获取。如果未设置,操作系统将根据目标选择最合适的地址。端口号
port必须是与套接字关联的端口号(如果有的话)。值 0 可以用来表示操作系统应选择端口号。- swap(other)¶
- Parameters:
其他 –
QNetworkDatagram
将此实例与
other交换。