1. QUdpSocket(通信套接字)
UDP(User Datagram Protocol,用户数据报协议)
UDP是一个轻量级、不可靠、面向数据报的、无连接的协议,多用于可靠性要求不严格,不是非常重要的传输。
QUdpSocket类继承自QAbstractSocket,用来发送和接收UDP数据报,”Socket”即套接字,套接字即IP地址+端口号。其中IP地址指定了网络中的一台主机,二端口号则指定了该主机上的一个网络程序,使用套接字即可实现网络上的两个应用程序之间的通信。
QUdpSocket支持IPv4广播,要广播数据报,则只需发送到一个特殊的地址QHostAddress::Broadcast(即255.255.255.255),数据报一般建议发送字节数小于512字节。端口号选择1024-65535(1024以下的常用作保留端口号,如FTP常用端口号21,Telnet常用端口号23,DNS域名服务器常用端口53等)。
1.1 信号
无
1.2 公有函数
函数 |
描述 |
bool hasPendingDatagrams() const |
如果至少有一个数据报等待读取,则返回true;否则返回false。 |
bool joinMulticastGroup(const QHostAddress &groupAddress) |
加入操作系统选择的默认接口上groupAddress指定的组播组。套接字必须处于BoundState状态,否则会发生错误。 |
bool joinMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface) |
这是一个重载函数。在接口上加入组播组地址groupAddress。 |
bool leaveMulticastGroup(const QHostAddress &groupAddress) |
在操作系统选择的默认接口上离开groupAddress指定的组播组。套接字必须处于BoundState状态,否则会发生错误。 |
bool leaveMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface) |
这是一个重载函数。离开接口上指定groupAddress的组播组。 |
QNetworkInterface multicastInterface() const |
返回多播数据报的出接口。这对应于IPv4套接字的IP_MULTICAST_IF套接字选项和IPv6套接字的IPV6_MULTICAST_IF套接字选项。如果之前没有设置接口,这个函数将返回一个无效的qnetworkinterface。套接字必须处于BoundState状态,否则返回无效的QNetworkInterface。 |
qint64 pendingDatagramSize() const |
返回第一个挂起的UDP数据报的大小。如果没有可用的数据报,这个函数返回-1。 |
qint64 readDatagram(char *data, qint64 maxSize, QHostAddress *address = nullptr, quint16 *port = nullptr) |
接收不大于maxSize字节的数据报,并将其存储在数据中。发送方的主机地址和端口存储在address和port中(除非指针是0)。成功返回数据报的大小;否则返回1。 |
QNetworkDatagram receiveDatagram(qint64 maxSize = -1) |
接收一个不大于maxSize字节的数据报,并在QNetworkDatagram对象中返回它,以及发送者的主机地址和端口。如果可能,该函数还将尝试确定数据报的目的地址、端口和接收时的跳数。 |
void setMulticastInterface(const QNetworkInterface &iface) |
将组播数据报的出接口设置为当前接口。这对应于IPv4套接字的IP_MULTICAST_IF套接字选项和IPv6套接字的IPV6_MULTICAST_IF套接字选项。套接字必须处于BoundState状态,否则此函数不执行任何操作。 |
qint64 writeDatagram(const char *data, qint64 size, const QHostAddress &address, quint16 port) |
将大小为size的数据报发送到端口上的主机地址。返回成功发送的字节数;否则返回1。 |
qint64 writeDatagram(const QByteArray &datagram, const QHostAddress &host, quint16 port) |
这是一个重载函数。将数据报发送到主机地址和端口。 |
•从QAbstractSocket继承了37个公共函数,上面有写QAbstractSocket的公有函数
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
1.3 发送与接收函数
QUdpSocket对于发送数据报文提供了三个重载函数:
qint64 writeDatagram(const char *data, qint64 size, const QHostAddress &address, quint16 port)//将大小为size的数据报发送到端口上的主机地址。返回成功发送的字节数;否则返回1。
qint64 writeDatagram(const QNetworkDatagram &datagram)
qint64 writeDatagram(const QByteArray &datagram, const QHostAddress &host, quint16 port)
接收消