QT编写TCP/UDP调试助手之UDP通信,支持单播、组播和广播三种通信模式。

UDP(用户数据报协议)是一种简单轻量级、不可靠、面向数据报,无连接的传输层协议,也就是发送数据前不需要握手连接,只要知道IP和端口号就能发送数据,但是对方能不能收到,收到的对不对就不得而知了。
UDP通信中分为三种通信方式,分别为单播、组播和广播,主要就是IP的区别。
1.在.pro文件中添加QT += network,包含头文件#include <QUdpSocket>
在类里定义一个QTcpSocket*成员m_udpSocket
2.界面校验设置。界面上有四个lineEdit用来填写IP和端口,通过setValidator可以限制lineEdit输入的范围,端口号范围0-65535,IP地址用正则表达式校验,防止输入错误。

3.绑定端口,绑定端口后收到数据时会发射readyRead()信号
4.接收数据槽函数,注意和TcpSocket不同,不是直接调用readAll()
5.选择组播通信模式时,可以勾选加入组播,接收组播数据。


组播是udp实现一对多通信的一种方式,一个udp客户端往该IP发消息,加入该组的客户端都会收到消息。组播IP地址为D类地址,范围224.0.0.0~239.255.255.255。
5.1判断IP地地址在224.0.0.0~239.255.255.255范围内
5.2加入退出组播IP组,加入后有数据会发射readyRead()信号,就能接收数据了
6.发送数据,调用m_udpSocket->writeDatagram(byteArray,ip,port)发送,单播、组播和广播就是IP不同,这里就体现出来了。
6.1单播:IP地址任意,例如:
6.2组播:IP是D类地址,范围224.0.0.0~239.255.255.255,有加入组的客户端才会收到数据,例如:
6.3广播:IP设置为QHostAddress::Broadcast,相当于QHostAddress(“255.255.255.255”).,广播数据会发送给局域网内的每个客户端,例如:
7.注意事项
前面都在说IP,其实端口也很重要,端口一定要对应,不然会收不到数据,例如:
7.1组播通信,本地绑定的是192.168.206.1:6666,并加入组播IP 224.0.0.2。对方往224.0.0.2:1234发数据本地是收不到的,因为端口不对,要往224.0.0.2:6666发才收得到。
7.1广播也是如此,writeDatagram(byteArray,QHostAddress::Broadcast,1234);广播发的是1234端口,那局域网内的客户端也必须绑定的是1234端口,才会收到数据。
tcp/udp调试助手

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/146397.html