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广播只能在局域网范围内使用
组播
我们再使用广播发送消息的时候会发送给所有用户,但是有些

最低0.47元/天 解锁文章
1942

被折叠的 条评论
为什么被折叠?



