龙渊幻想-异世界冒险活动站

龙渊幻想-异世界冒险活动站

QUdpSocket Class

成员函数文档

[explicit] QUdpSocket::QUdpSocket(QObject *parent = nullptr)

创建 QUdpSocket 对象。

parent 将传递给QObject 构造函数。

另请参阅 socketType().

[virtual noexcept] QUdpSocket::~QUdpSocket()

销毁套接字,必要时关闭连接。

另请参阅 close().

bool QUdpSocket::hasPendingDatagrams() const

如果至少有一个数据报正在等待读取,则返回true ;否则返回false 。

另请参阅 pendingDatagramSize() 和readDatagram()。

bool QUdpSocket::joinMulticastGroup(const QHostAddress &groupAddress)

在操作系统选择的默认接口上加入groupAddress 指定的组播组。套接字必须处于绑定状态,否则会出错。

请注意,如果您试图加入一个 IPv4 组,您的套接字就不能使用 IPv6 绑定(或在双模式下使用QHostAddress::Any )。您必须使用QHostAddress::AnyIPv4 。

如果成功,该函数将返回true ;否则将返回false 并相应设置套接字错误。

注意: 所有操作系统都不支持在未选择接口的情况下加入 IPv6 组播组。请考虑使用指定接口的重载。

另请参阅 leaveMulticastGroup().

bool QUdpSocket::joinMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface)

加入接口iface 上的组播组地址groupAddress 。

这是一个重载函数。

另请参阅 leaveMulticastGroup() 。

bool QUdpSocket::leaveMulticastGroup(const QHostAddress &groupAddress)

在操作系统选择的默认接口上离开groupAddress 指定的组播组。套接字必须处于 BoundState 状态,否则会出错。

如果成功,该函数将返回true ;否则将返回false 并相应设置套接字错误。

注意: 调用此函数时应使用与传给joinMulticastGroup() 相同的参数。

另请参阅 joinMulticastGroup()。

bool QUdpSocket::leaveMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface)

在接口iface 上离开groupAddress 指定的组播组。

注: 调用该函数时应使用与传给joinMulticastGroup() 相同的参数。

这是一个重载函数。

另请参阅 joinMulticastGroup()。

QNetworkInterface QUdpSocket::multicastInterface() const

返回多播数据报的传出接口。这与 IPv4 套接字的 IP_MULTICAST_IF 套接字选项和 IPv6 套接字的 IPV6_MULTICAST_IF 套接字选项相对应。如果之前未设置接口,该函数将返回一个无效的QNetworkInterface 。套接字必须处于 BoundState 状态,否则将返回一个无效的QNetworkInterface 。

另请参阅 setMulticastInterface() 。

qint64 QUdpSocket::pendingDatagramSize() const

返回第一个待处理 UDP 数据报的大小。如果没有可用数据报,该函数将返回-1。

另请参阅 hasPendingDatagrams() 和readDatagram()。

qint64 QUdpSocket::readDatagram(char *data, qint64 maxSize, QHostAddress *address = nullptr, quint16 *port = nullptr)

接收不大于maxSize 字节的数据报,并将其存储在data 中。发件人的主机地址和端口存储在 *address 和 *port 中(除非指针是nullptr )。

成功时返回数据报的大小,否则返回-1。

如果maxSize 太小,数据报的其余部分将丢失。为避免丢失数据,在尝试读取数据报之前,请调用pendingDatagramSize() 确定待处理数据报的大小。如果maxSize 为 0,数据报将被丢弃。

另请参阅 writeDatagram()、hasPendingDatagrams() 和pendingDatagramSize()。

QNetworkDatagram QUdpSocket::receiveDatagram(qint64 maxSize = -1)

接收不大于maxSize 字节的数据报,并将其连同发送方的主机地址和端口一起返回QNetworkDatagram 对象。如果可能,该函数还将尝试确定数据报的目标地址、端口以及接收时的跳数。

如果失败,则返回一个报告not valid 的QNetworkDatagram 。

如果maxSize 太小,数据报的其余部分将丢失。如果maxSize 为 0,数据报将被丢弃。如果maxSize 为 -1(默认值),该函数将尝试读取整个数据报。

另请参阅 writeDatagram()、hasPendingDatagrams() 和pendingDatagramSize()。

void QUdpSocket::setMulticastInterface(const QNetworkInterface &iface)

将多播数据报的传出接口设置为接口iface 。这对应于 IPv4 套接字的 IP_MULTICAST_IF 套接字选项和 IPv6 套接字的 IPV6_MULTICAST_IF 套接字选项。套接字必须处于 "绑定状态"(BoundState),否则该函数不会执行任何操作。

另请参阅 multicastInterface()、joinMulticastGroup() 和leaveMulticastGroup()。

qint64 QUdpSocket::writeDatagram(const char *data, qint64 size, const QHostAddress &address, quint16 port)

将大小为size 的数据报data 发送到端口port 的主机地址address 。如果发送成功,则返回发送的字节数;否则返回-1。

数据报始终写成一个数据块。数据报的最大大小与平台有很大关系,但最小可以是 8192 字节。如果数据报过大,该函数将返回-1,而error() 将返回 DatagramTooLargeError。

一般来说,发送大于 512 字节的数据报是不利的,因为即使数据报发送成功,在到达最终目的地之前也很可能被 IP 层分片。

警告 在已连接的 UDP 套接字上调用此函数可能会导致错误和数据包无法发送。如果使用已连接的套接字,请使用write() 发送数据报。

另请参阅 readDatagram() 和write()。

qint64 QUdpSocket::writeDatagram(const QNetworkDatagram &datagram)

将数据报datagram 发送至datagram 中包含的主机地址和端口号,并使用其中设置的网络接口和跳数限制。如果未设置目标地址和端口号,该函数将发送到传给connectToHost() 的地址。

如果目标地址为 IPv6,且scope id 非空,但与datagram 中的接口索引不同,则操作系统将选择在哪个接口上发送,这一点未定义。

如果函数成功发送,则返回发送的字节数;如果遇到错误,则返回-1。

警告: 在已连接的 UDP 套接字上调用此函数可能会导致错误和数据包无法发送。如果使用已连接的套接字,请使用write() 发送数据报。

这是一个重载函数。

另请参阅 QNetworkDatagram::setDestination()、QNetworkDatagram::setHopLimit() 和QNetworkDatagram::setInterfaceIndex()。

qint64 QUdpSocket::writeDatagram(const QByteArray &datagram, const QHostAddress &host, quint16 port)

将数据报datagram 发送到主机地址host 和端口port 。

如果发送成功,函数返回发送的字节数;如果发送出错,则返回-1。

这是一个重载函数。