十二、UDP单播与广播程序编写

TCP客户端必须要连接TCP服务端他们才能正常进行通信,那么有没有一种不需要连接就能通信的方式呢?

UDP(User Datagram Protocol 即用户数据报协议)是一个轻量级的,不可靠的,面向数据报的无连接协议。

UDP 的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用 UDP 较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

QUdpSocket 类提供了一个 UDP 套接字。 QUdpSocket 是 QAbstractSocket 的子类,允许发送和接收 UDP 数据报。

单播(unicast): 单播用于两个主机之间的端对端通信,需要知道对方的 IP 地址与端口。

广播(broadcast): 广播 UDP 与单播 UDP 的区别就是 IP 地址不同,广播一般使用广播地址255.255.255.255,将消息发送到在同一广播(也就是局域网内同一网段) 网络上的每个主机。

通过下面的图会更好理解他们(组播暂未学习,学习完自己可以研究一下)

我们新建项目widget,与TCP学习的内容一样,首先我们先将网络模块加进来。

具体代码修改如下:

有线网卡的IP地址 绑定它也是可以的,如果你想在整个局域网里面通信的话用的IP地址就是它(例如192.168.1.59),虽然它是虚拟出来的网卡,可是它的作用和真实的网卡效果是一样的,它是连接到整个局域网的;如果你想在这个操作系统里面通信的话,就用到这个环回地址(127.0.0.1),环回地址是不连接到局域网的。

其实我们这里可以不用绑定IP地址,因为局域网里的IP地址是会变的。

那么我们就要学习一下bind()这个方法:

我们打印数据,就要设置界面了。

读数据有了,那怎么来写数据呢?

在ui设计器这里右键发送消息转到槽(clicked):

我们将绑定端口(UI设计器)转到槽(clicked):

有时候我们不想接收消息,那我们再完善下解除绑定(UI设计器)的槽函数(clicked):

这里有两个错误:

错误修正OK,执行!

测试的时候不知道你的IP地址是多少,我们再改回127.0.0.1。

绑定度那口和解除绑定这两个按钮是互斥的。

广播消息和单播消息的区别就是改变下IP地址就行了。

我们在UI设计器里右键广播消息转到槽(clicked):

我们要打印Socket的状态(与TCP的一样),我们再写一遍信号槽函数:

我们再改下程序:

绑定的端口要与发送的端口不一样。

我们修改不同的端口号分别执行两次界面:

第一次执行使用ctrl+r ,第二次执行可以用终端打开:

最后执行的效果如下:


完结撒花🌸🌸🌸!!!

相关推荐
for_ever_love__2 小时前
python基础语法学习: 变量, 输入输出, 运算符
网络·python·学习
学习和思考2 小时前
非自动化专业如何自学PLC?我的6个月学习路线图
笔记·学习·自动化·学习方法
huainingning3 小时前
RJ DHCPV6 无状态配置成功案例
网络·智能路由器
恒拓高科WorkPlus3 小时前
从“可选项”到“必选项”——私有化部署即时通讯如何重塑企业协作新底座
大数据·网络·人工智能
疯狂打码的少年3 小时前
【数据结构】栈的应用:表达式求值(后缀表达式)
java·数据结构·笔记·算法
kels88994 小时前
实战排坑:黄金实时API开发,XAUUSD Tick报文异常处理实践
开发语言·python·websocket·网络协议·信息可视化
Bobolink_4 小时前
IP更换频率:账号运营里多久换一次IP算正常
大数据·网络协议·tcp/ip
上海云盾商务经理杨杨4 小时前
权限绕过漏洞渗透实战!突破登录验证访问后台功能
网络·安全
雾沉川4 小时前
Wireshark v4.4.7.0 网络抓包工具安装与实操技术教程
网络·测试工具·wireshark
sbjdhjd4 小时前
大三网安秋招核心学习前言(AI 安全 + Web 漏洞 + 内网渗透全考点)
人工智能·网络协议·学习·安全·网络安全·开源·php