QT系列— UDP应用篇

该文章已生成可运行项目,

QT UDP应用篇

1、开发环境

PC操作系统: WIN7

QT开发环境:Qt Creator5.5

2、开发目标

如下图所示,开发一个UDP工具,实现如下功能:

1、设置UDP通信目的IP地址、目的端口号和绑定的本地端口号。

2、支持接收消息,支持文本和十六进制显示。

3、支持发送消息,支持文本和十六进制发送。

4、支持接收消息的清空,支持UDP连接的打开和关闭功能。
在这里插入图片描述

3、UDP原理

使用Qt提供的QUdpSocket进行UDP通信。在UDP方式下,客户端并不与服务器建立连接,它只负责调用发送函数向服务器发送数据。类似的服务器也不从客户端接收连接,只负责调用接收函数,等待来自客户端的数据的到达。

在UDP通信中,服务器端和客户端的概念显得有些淡化,两部分做的工作都大致相同:

(1)创建套接字

(2)绑定套接字

在UDP中如果需要接收数据则需要对套接字进行绑定,只发送数据则不需要对套接字进行绑定。

通过调用bind函数将套接字绑定到指定端口上。

(3)接收数据:使用readDatagram()接收数据,函数声明如下:

qint64 readDatagram(char * data, qint64 maxSize, QHostAddress * address = 0, quint16 * port = 0)

参数:

u data: 接收数据的缓存地址

u maxSize: 缓存接收的最大字节数

u address: 数据发送方的地址(一般使用提供的默认值)

u port: 数据发送方的端口号(一般使用提供的默认值)

使用pendingDatagramSize()可以获取到将要接收的数据的大小,根据该函数返回值来准备对应大小的内存空间存放将要接收的数据。

(4)发送数据: 使用writeDatagram()函数发送数据,函数声明如下:

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

参数:

u datagram:要发送的字符串

u host:数据接收方的地址

u port:数据接收方的端口号

广播

在使用QUdpSocket类的writeDatagram()函数发送数据的时候,其中第二个参数host应该指定为广播地址:QHostAddress::Broadcast此设置相当于QHostAddress(“255.255.255.255”)

使用UDP广播的的特点:

使用UDP进行广播,局域网内的其他的UDP用户全部可以收到广播的消息

UDP广播只能在局域网范围内使用

组播

我们再使用广播发送消息的时候会发送给所有用户,但是有些

本文章已经生成可运行项目
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CPUOS2010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值