Qt套接字类的继承结构如下图所示:
其中,QUdpSocket类用于实现基于UDP协议的网络通信。它继承自QAbstractSocket类,以数据报而非数据流的形式传输数据。发送数据报,调用该类的writeDatagram方法。每个数据报的载荷长度一般少于512字节,包头中包含发送者和接收者的IP地址、端口等信息。另外,QUdpSocket类还是QIODevice类的间接子类,因此也可被视为一个I/O流。通过QUdpSocket类接收数据,需要先调用该类的bind方法绑定一个端口。当有数据报到达时,QUdpSocket类的对象会发射readyRead信号。在与该信号相连接的槽中,调用该类的readDatagram方法接收数据报。
xxxxxxxxxx
71bool QUdpSocket::bind(quint16 port = 0); // 绑定端口
2qint64 QUdpSocket::writeDatagram(QByteArray& datagram, QHostAddress& host, quint16 port); // 发送数据报,返回实际发送的字节数
3bool QUdpSocket::hasPendingDatagrams(); // 是否存在待接收的数据报
4qint64 QUdpSocket::pendingDatagramSize(); // 获取待接收数据报的字节数
5qint64 QUdpSocket::readDatagram(char* data, qint64 maxSize); // 接收数据报,返回实际接收的字节数
6bool QUdpSocket::joinMulticastGroup(QHostAddress& groupAddress); // 加入多播组
7bool QUdpSocket::leaveMulticastGroup(QHostAddress& groupAddress); // 离开多播组