Qt 网络编程 udp通信

学习目标:使用udp通信

前置环境

运行环境:qt creator 4.12

学习内容

UDP 协议基础知识
1、UDP(用户数据报协议)是轻量的、不可靠的、面向数据报、无连接的协议,用于可靠性要求不高的场合。两个应用程序之间进行UDP 通信不需先建立持久的 socket 连接,UDP 每次发送数据报都需要指定目标地址和端口。

2.ÙDP 报文没有可靠性保证、顺序保证和流量控制字段等,可靠性一较差。但是正因为 UDP 协议的控制选项较少在数据传输过程中延迟小、数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如 DNS、TFTP、SNMP 等。

3、UDP 报头由 4个域组成,其中每个域各占用 2 个字节,具体包括
源端口号、目标端口号、数据包长度、校验值。端口号有效范围0--65535,假设端口号大于 49151的端口都代表动态端口

4、QUdpSocket类从QAbstractSocket类继承 基本跟QTcpSocket共用大部分的接口函数,主要区别在于 QUdpSocket 以数据报传输数据,不是以连续的数据流,发送方发送数据报使用函数QUdpSocket::writeDataGram(),数据报长度一般不超过 512 个字节,每个数据报包含发送方和接收方的 IP 地址和端口等数据信息。

QUdpSocket是Qt中用于UDP网络通信的类,它提供了以下一些常用的成员函数:

  1. bind(const QHostAddress &address, quint16 port): 绑定到指定的地址和端口。

  2. bind(quint16 port, BindMode mode = DefaultForPlatform): 绑定到指定的端口,并设置绑定模式。

  3. writeDatagram(const QByteArray &datagram, const QHostAddress &host, quint16 port): 将指定的数据报发送到指定的主机和端口。

  4. writeDatagram(const char *data, qint64 size, const QHostAddress &host, quint16 port): 将指定大小的数据发送到指定的主机和端口。

  5. readDatagram(char *data, qint64 maxSize, QHostAddress *address = nullptr, quint16 *port = nullptr): 从接收缓冲区中读取一个数据报,并将其存储在指定的缓冲区中。

  6. pendingDatagramSize(): 返回下一个待读取的数据报的大小。

  7. hasPendingDatagrams(): 检查是否有待读取的数据报。

  8. joinMulticastGroup(const QHostAddress &groupAddress)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值