基于UDP协议的网络通信应用程序(UDP-Socket)
Posted 微联智控工作室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于UDP协议的网络通信应用程序(UDP-Socket)相关的知识,希望对你有一定的参考价值。
可点击右上角的 …,分享这篇文章
前两篇文章介绍了基于TCP/IP协议的网络通信应用程序。相比起TCP/IP协议的可靠,面向连接,基于字节流通信这些特性,UDP协议是一种轻量级,不可靠,基于数据报的传输协议。
很多人会问,为什么UDP协议传输不可靠还要继续使用它?那是因为UDP协议使用起来很方便,不需要建立连接,资源消耗少,通信效率高,在线播放音频或者视频的时候,使用UDP协议比使用TCP/IP协议有更高的传输效率,因为在这种使用场景下,即使丢失一两个数据包,对结果都影响不大。在网络质量不佳的情况下,使用UDP协议传输可能丢包严重,开发者应该注意根据不同的场合选择合适的协议。
对于UDP传输协议,数据报有以下三种传输方式:
使用嵌入式QT进行UDP协议的网络通信应用程序开发,QT的network类库提供了QUdpSocket类,这个类继承于QAbstractSocket类,并向应用层提供了UDP通信的基本操作方法,如绑定函数bind(),加入组播joinMulticastGroup(),离开组播leaveMulticastGroup(),数据报的读写操作函数,等等。具体可以参阅 QtNetwork/qudpsocket.h 文件的内容。
目标:
使用QT提供的UDP网络通信类,实现一个简单的Udp_Socket收发工具。
功能:
(3)可选择UDP数据报的发送方式:组播,单播,广播。
(4)界面显示UDP协议的网络收发数据,并提供清屏按钮。
(5)提供手动发送按钮和自动发送按钮。
开发板运行Udp_Socket收发工具后,界面如下图所示:
界面描述:
(3)选择UDP的发送方式,单播,组播或广播。
(5)点击 [START_AUTO_SEND] ,以一秒的频率间隔发送数据。
以下是应用程序的开发过程。
1、 先用Qt Creator构建一个工程,命名为:009_udp_socket,关于如何构建工程,请参考“第一个嵌入式QT应用程序”的具体内容。
2、 创建工程后,修改009_udp_socket.pro里面的内容,添加QT里面的网络通信模块network,使工程支持QT网络类的调用,如下图所示。
3、 双击打开“widget.ui”文件,构建界面,构建后的界面如下图所示:
应用程序界面描述如上面内容所示,这里不作重复。
6、 当应用程序接收到UDP的数据报时,底层系统就会触发readRead()信号,进而调用数据接收的槽函数void UdpSocket::slot_udp_read_data()进行处理。数据接收槽函数如下图所示:
这个函数不断读取缓冲区的数据,读取完成后,发送信号通知ui界面进行数据显示。
8、 以上就是UdpSocket类的主要函数实现,接下来,分析一下窗体构造Widget类的具体实现过程。
10、 应用程序可以自由选择(单播,组播,广播)这三种发送方式的其中一种,可以通过使用radioButton来实现互斥,当发送方式发生改变时,调用以下槽函数进行处理。
12、 以上就是整个Udp_Socket应用程序的开发过程,相比起TCP/IP,使用UDP协议进行数据传输是比较方便快捷的,开发者应该根据不同的应用场景选择不同的数据传输协议,每种协议都各有利弊,合适的就是最好的。
13、 把应用程序下载到开发板上运行,如下图所示:
-- END --
以上是关于基于UDP协议的网络通信应用程序(UDP-Socket)的主要内容,如果未能解决你的问题,请参考以下文章