- 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上创建工单的方式通知我们
详细说明#
有效载荷数据;
发送方的地址和端口号;
目标地址和端口号;
剩余跳数限制(在IPv4中,该字段通常称为“生存时间” - TTL);
数据报接收或即将发送的网络接口索引。
通常,当向之前接收到的数据包发送数据报时,需要将
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__(data[, destinationAddress=QHostAddress()[, port=0]])#
- 参数::
数据 –
QByteArray
destinationAddress –
QHostAddress
端口号 – int
创建一个
QNetworkDatagram
对象,并将数据作为有效载荷数据,以及将destinationAddress
和port
作为数据报的目的事实地址。- __init__(other)
- 参数::
other –
QNetworkDatagram
创建一个副本,包括有效载荷和元数据。
要创建一个适当的回复数据报,请使用
makeReply()
;- __init__(
创建一个没有有效载荷数据和未定义目的地址的
QNetworkDatagram
对象。可以通过使用
setData()
修改有效载荷,并通过setDestination()
设置目的地址。如果未定义目的地址,
writeDatagram()
将尝试通过使用connectToHost()
将数据报发送到最后关联的地址。- clear(#
清除这个
QNetworkDatagram
对象中的有效载荷数据和元数据,将它们重置到默认值。- data(#
- 返回类型:
返回该数据报的数据有效载荷。对于从网络接收到的数据报,它包含数据报的有效载荷。对于要发送的数据报,它是将要发送的数据报。
请注意,可以通过不传输数据来传输数据报,因此返回的QByteArray可能为空。
另请参见
- destinationAddress(#
- 返回类型:
返回与此数据报关联的目的地址。对于一个从网络接收到的数据报,它是对等节点发送数据报的地址,可以是此机器的本地地址、多播或广播地址。对于即将发送的数据报,它是应该发送到的地址。
如果没有在数据报上设置目的地址,返回的对象将对
isNull()
报告为 true。- destinationPort()#
- 返回类型:
int
返回与此数据报关联的目的端口号。对于从网络接收到的数据报,它是对等节点发送数据报的本地端口号。对于即将发送的数据报,它是应该发送到的对等端口号。
如果没有与数据报关联的目的地址,此函数返回 -1。
- hopLimit()#
- 返回类型:
int
返回与此数据报关联的跳数限制。跳数限制是在数据报过期并将错误发送回数据报发送者之前,允许转发 IP 数据包的节点数。在 IPv4 中,此值通常称为“生存时间” (TTL)。
如果此数据报是从网络接收到的,这是接收后数据报的剩余跳数,并且在每个转发此数据包的节点上减少 1。-1 的值表示无法获取跳数限制计数。
如果这是一个即将发送的数据报,这是发送时应在 IP 头部设置的值。-1 的值表示操作系统应选择此值。
另请参见
- interfaceIndex()#
- 返回类型:
int
返回与此数据报关联的接口索引。接口索引是唯一标识操作系统中网络接口的正数。此数字与接口
index()
返回的值相匹配。如果此数据报是从网络接收到的,这是接收数据包的接口索引。如果这是一个即将发送的数据报,这是应该发送数据报的接口索引。
值 0 表示接口索引未知。
另请参见
- isNull()#
- 返回类型:
bool
如果此
QNetworkDatagram
对象为null,则返回true。此函数是isValid()
函数的相反。- isValid()#
- 返回类型:
bool
如果此
QNetworkDatagram
对象有效,则返回true。一个有效的QNetworkDatagram
对象至少包含一个发送地址或接收地址。有效的数据报可以包含空的有效负载。- makeReply(payload)#
- 参数::
payload –
QByteArray
- 返回类型:
- senderAddress()#
- 返回类型:
返回与此数据报关联的发送地址。对于从网络接收的数据报,它是发送数据报的对端节点地址。对于出站数据报,它是发送时要使用的本地地址。
如果在此数据报上没有设置发送地址,则返回的对象将对
isNull()
报告为true。- senderPort()#
- 返回类型:
int
返回与此数据报关联的发送端口号。对于从网络接收的数据报,这是对端节点发送数据报的端口号。对于出站数据报,这是数据报发送时应使用的本地端口号。
如果与此数据报没有关联发送地址,则此函数返回-1。
- setData(data)#
- 参数::
数据 –
QByteArray
将此数据报的数据负载设置为
data
。对于接收的的数据报通常不需要调用此函数。对于出站数据报,此函数设置要发送到网络的数据。由于数据报文可以空,一个空的QByteArray确实是用于
data
的合法值。另请参见
- setDestination(address, port)#
- 参数::
address –
QHostAddress
端口号 – int
将该数据报文关联的目标地址设置为地址
address
和端口号port
。目标地址和端口号通常由QUdpSocket
在接收时设置,因此无需在接收到数据报文时调用此函数。对于发出的数据报文,此函数可以用来设置数据报文应该发送的地址。这可能是一个用于与对等设备通信的单播地址,或者是一个用于发送到多个设备的广播或多播地址。
- setHopLimit(count)#
- 参数::
count – int
将与此数据报文关联的跳数限制设置为
count
。跳数限制是在IP数据包在超时前可以转发的节点数,如果超时会返回错误给数据报文的发送者。在IPv4中,此值通常被称为“生存时间”(TTL)。通常不需要在网络接受到的数据报文上调用此函数。
如果这是一个出站数据包,那么这是在发送时要设置的IP头中的值。值的合法范围是1到255。此函数还接受-1作为值,表示操作系统应选择该值。
另请参见
- setInterfaceIndex(index)#
- 参数::
index – int
将此数据报文关联的接口索引设置为
index
。接口索引是在操作系统中唯一标识网络接口的正整数。此数字与index()
返回的值匹配。通常不需要在网络接受到的数据报文上调用此函数。
如果这是一个出站数据包,这是数据报文应该发送的接口索引。0表示操作系统应根据其他因素选择接口。
请注意,接口索引也可以使用
setScopeId()
在 IPv6 目标地址中设置,然后通过setDestination()
. 如果在目标地址和index
中设置的范围 ID 不同且均不为零,则操作系统的行为是未定义的,它将不确定在哪个接口上发送数据报。- setSender(address[, port=0])#
- 参数::
address –
QHostAddress
端口号 – int
设置与此数据报相关的发送者地址为
address
和端口号port
。发送者地址和端口号通常由QUdpSocket
在接收时设置,因此不需要在接收到的数据报上调用此函数。对于出站数据报,此函数可以用来设置数据报应携带的地址。地址
address
通常必须是分配给此机器的本地地址之一,可以使用QNetworkInterface
获取。如果不设置,操作系统将根据目标地址选择最合适的地址来使用。端口号
port
必须是与之相关的套接字的端口号,如果有。可以使用 0 的值来指示操作系统选择端口号。- swap(other)#
- 参数::
other –
QNetworkDatagram
与此实例交换
other
。