Qt网络-UDP概述(一)

1. UDP概述

UDP是轻量的、不可靠的、面向数据报的、无连接的协议,通常用于对可靠性要求不高、对速度要求较高的场合。相对于TCP通信,UDP通信不需要事先建立socket连接,UDP每次发送数据都需要指定目标地址和端口。UDP以数据报传输数据,而不是以连续的数据流。数据报大小一般小于512字节,每个数据包包含发送者和接收者的IP地址和端口等信息。

2. UDP通信三种模式

  • 单播(unicast)模式:一个UDP客户端发出的数据报只发送到另一个指定IP地址和端口的UDP客户端,一对一传输。
  • 广播(broadcast)模式:一个UDP客户端发出的数据报,在同一网络范围内其他所有的UDP客户端都可以收到。要获取广播数据只需要在数据报中指定接收端地址为QHostAddress::Broadcast,一般的广播地址是255.255.255.255。
  • 组播(multicast)模式:也称为多播。UDP客户端加入到另一个组播IP地址指定的多播组,成员向组播地址发送的数据报组内成员都可以接收到,类似于QQ群功能。

在单播、广播、多播模式下,UDP程序都是对等的,没有TCP中服务器和客户端之分。

Qt网络-UDP概述(一)_第1张图片

3. QUdpSocket


bool bind(quint16 port = 0, BindMode mode = DefaultForPlatform)
为UDP通信绑定一个端口

qint64 writeDatagram(const QByteArray &datagram, const QHostAddress &host, quint16 port)
向指定的目标地址和端口的UDP客户端发送数据报,返回成功发送的字节数

bool hasPendingDatagrams() const
当至少有一个数据报需要读取时,返回true

qint64 pendingDatagramSize() const
返回待读取的数据报的大小

qint64 readDatagram(char *data, qint64 maxSize, QHostAddress *address = Q_NULLPTR, quint16 *port = Q_NULLPTR)
读取一个数据报,返回成功读取的数据报的字节数


bool joinMulticastGroup(const QHostAddress &groupAddress)
加入一个多播组

bool leaveMulticastGroup(const QHostAddress &groupAddress)
离开一个多播组

4. 单播和广播程序

Qt网络-UDP概述(一)_第2张图片
程序代码:Qt-UDP,QUdpSocket单播和广播程序实现
Qt5.9开发指南,强化Qt基础知识笔记。

你可能感兴趣的:(Qt,qt,udp)