45黑马QT笔记之Qt下的Udp的广播和组播

2023-10-27

45黑马QT笔记之Qt下的Udp的广播和组播

1 广播:
  在使用QUdpSocket类的writeDatagram()函数发送数据的时候,其中第二个参数host应该指定为广播地址:QHostAddress::Broadcast此设置相当于QHostAddress(“255.255.255.255”)。255.255.255.255在所有网段都属于广播地址,是当前子网的广播地址。例如在UDP的例子中,我们在输入对方ip时输入255.255.255.255就是相当于广播,在该子网(局域网)的主机都会被发送,应用程序能不能接收到就看你的端口号。(局域网的最大主机数由子网掩码决定)
 
使用UDP广播的的特点:
1)使用UDP进行广播,局域网内的其他的UDP用户全部可以收到广播的消息。
2)UDP广播只能在局域网范围内使用。
  假设我们每次都用广播,当前子网(局域网)的用户都要接收,这就容易造成网络拥堵和资源浪费,能不能只有几个人的广播呢?所以组播这出现了。

2 组播:
  我们再使用广播发送消息的时候会发送给所有用户,但是有些用户是不想接受消息的,这时候我们就应该使用组播,接收方只有先注册到组播地址中才能收到组播消息,否则则接受不到消息。另外组播是可以在Internet中使用的。
在使用QUdpSocket类的writeDatagram()函数发送数据的时候,其中第二个参数host应该指定为组播地址,关于组播地址的分类(一定是D类IP地址):
1)224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;

2)224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;

3)224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;

4)239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。

注册加入到组播地址需要使用QUdpSocket类的成员函数:

bool	joinMulticastGroup(const QHostAddress &groupAddress)

3 总结广播和组播的测试:
 1) 广播:
 测试广播只需要在正常的UDP通信中,在writeDatagram()的参2输入广播地址即可,这里用的是255.255.255.255。(广播地址的分类自己去找资料了解)
 
下面可以看到,广播时,同一局域网内的主机都会收到消息,应用程序能不能接收到就看你的端口号。(我的电脑的两个用户,肯定在同一局域网嘛。)
在这里插入图片描述
 2)组播:
  测试组播同样在正常的UDP通信中,只需要增加一语句,用来注册某个D类ip地址加入组播(即用joinMulticastGroup参1注册,该参为D类中的组播地址),然后通过窗口的行编辑赋给writeDatagram的参数2来进行组播通信即可。只不过绑定时要多写IPv4协议。不注册的组播地址是无法通信的。
 
下面是没有加入组播ip地址224.0.0.2时,两个窗口是无法在该组播地址通信的。
在这里插入图片描述
注册组播地址224.0.0.2后,两个窗口是可以在该组播地址互相通信。端口6666的收到8888发来的消息,当然8888也可以收到6666发送的消息。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

45黑马QT笔记之Qt下的Udp的广播和组播 的相关文章

  • 57黑马QT笔记之数据库的语句执行--插入(包括SQL语句的增删改查和复制表结构)

    57黑马QT笔记之数据库的语句执行 插入 概念 1 回滚 也就是我们常见的事务回滚 例如当我要删除某个数据库时 我开启了一个事务 然后再弹出一个对话框给你 是否提交事务 或者作出事务的回滚 也就是说取消了这个删除的操作 并不会执行到删除数据
  • 27黑马QT笔记之QPixmap和QBitmap的区别

    27黑马QT笔记之QPixmap和QBitmap的区别 前提 首先我们先要了解什么是透明和不透明的图片 1 透明是指显示后与背景颜色一样的 2 不透明就是有自己的颜色 与背景颜色不一样 看下图 前者就是透明的 后者是背景是白色的 是不透明的
  • 45黑马QT笔记之Qt下的Udp的广播和组播

    45黑马QT笔记之Qt下的Udp的广播和组播 1 广播 在使用QUdpSocket类的writeDatagram 函数发送数据的时候 其中第二个参数host应该指定为广播地址 QHostAddress Broadcast此设置相当于QHos
  • 24黑马QT笔记之画背景图

    24黑马QT笔记之画背景图 1 区别不是窗口的显示图片 在窗口中绘图必须重写绘图事件 在绘图事件中绘图 即用到QPainter画家和xxx begin this 函数指定绘图设备 与之前学的区别 下面的代码是在标签中显示图片 只是简单的显示
  • 49黑马QT笔记之利用TCP传输文件

    49黑马QT笔记之利用TCP传输文件 前提 黑马视频的代码第二次不能传输的原因是因为 客户端在第一次传输完成后 isStart false 即第二次无法接收文件信息并打开文件 所以他会出现 write device not open 我们在
  • 60黑马QT笔记之SQLite

    60黑马QT笔记之SQLite 1 与MYSQL的区别 1 SQLite是本地数据库 不需要和MYSQL一样需要连接 2 插入时不支持自动增长 所以主键例如id 在输入时需要自己去控制 3 使用时需要先提前建好后缀为xxx db的文本文件
  • 44黑马QT笔记之IP地址的划分与是否在同一网段

    44黑马QT笔记之IP地址的划分与是否在同一网段 前提 1 网络ID ip地址的第一个字节 2 网络地址 在这里你可以认为它就是网络ID 3 网段 用来区分网络上的主机是否在同一区段内 只要知道ip地址和子网掩码就知道该网段 在局域网中只有
  • 31黑马QT笔记之QPixmap、QImage、QPicture功能大总结

    31黑马QT笔记之QPixmap QImage QPicture功能大总结 QPixmap QImage既可以用于绘图 又可以作绘图设备时保存图片 而QPicture只能用于作绘图设备时保存图片状态 保存前需要用到前两种方法绘图 要显示必须
  • 28黑马QT笔记之QPixmap保存图片

    28黑马QT笔记之QPixmap保存图片 1 QPixmap QImage QPictrue三种绘图工具之间的区别 上一篇我们讲到QPixmap如何在窗口进行绘图 接下来本篇要讲的是QPixmap如何保存一张图片 即将已有图片再按自己方式保
  • 35黑马QT笔记之QFile写文件

    35黑马QT笔记之QFile写文件 1 如何在文本编辑区写内容保存到一个本地文件呢 1 利用文件对话框函数getSaveFileName获取要创建的文件路径 实际上还没真正在电脑创建 只是意味着你要创建的路径 2 将要创建的文件路径与QFi
  • 42黑马QT笔记之Linux下Tcp/Udp通信过程

    42黑马QT笔记之Linux下Tcp Udp通信过程 1 Linux下Tcp通信过程 1 第一次握手 执行connect 2 第二次握手 accept 返回 3 第三次握手 connect 返回 4 共有三个套接字 客户端1个fd 服务端一
  • 23黑马QT笔记之猜数字游戏答案

    23黑马QT笔记之猜数字游戏答案 代码在自己写的day04的第一个项目 想要代码的直接评论 写上自己的邮箱 不要像以前发私信了 因为CSDN有时消息不同步 或者看了之后忘了
  • 47黑马QT笔记之Qt下Udp通信过程例子及实现广播与组播

    47黑马QT笔记之Qt下Udp通信过程例子及实现广播与组播 1 客户端 客户端需要注意一点 客户端没有绑定端口的话 服务端无法发送信息给客户端 Linux下可以是因为他们在同一端口 所以Qt下你也在同一端口内通信 即窗口内自己连自己的Ip和
  • 36黑马QT笔记之QString、QByteArray、char*的互相转换

    36黑马QT笔记之QString QByteArray char 的互相转换 1 直接看代码 if 0 QString gt QByteArray QString str 123 QByteArray array str toUtf8 中文
  • 37黑马QT笔记之QFileInfo提供文件相关信息

    37黑马QT笔记之QFileInfo提供文件相关信息 1 QFileInfo 这个类提供了许多函数给我们查找文件的信息 例如文件名 文件大小等等 对我们进行某些处理相当有用 例如你要对某个目录操作 需要判断它是否为目录 当你需要传输文件内容
  • 07黑马QT笔记之信号重载时connect的写法(带参数的信号)

    07黑马QT笔记之信号重载时connect的写法 带参数的信号 1 首先说这个例子要做的事情 一个窗口有两个按钮 分别为按钮1 按钮2 当我按下按钮2时 他会发射两个信号 这两个信号重载 名字一样 所以当我接收这两个信号并处理时 conne
  • 43黑马QT笔记之Qt下Tcp/Udp通信过程

    43黑马QT笔记之Qt下Tcp Udp通信过程 前提 Qt下的网络通信需要加上 QT newwork 模块 1 Qt下Tcp的通信过程 1 共有三个套接字 客户端有一个QTcpServer监听套接字 服务端有两个 分别是QTcpServer
  • 32黑马QT笔记之QPixmap和QImage的相互转换

    32黑马QT笔记之QPixmap和QImage的相互转换 1 QPixmap与QImage的互相转换 1 头文件 void paintEvent QPaintEvent 2 实现 cpp文件 void Widget paintEvent Q
  • 22黑马QT笔记之事件全总结

    22黑马QT笔记之事件全总结 1 每个控件重写过滤器 event函数 各个事件处理函数都一样 都是先类中声明 类外定义 2 每个控件都可以重写事件过滤器 但是他一般写在窗口 安装时参数要求继承QObject嘛 event函数和各个事件处理函
  • 55黑马QT笔记之关闭子线程

    55黑马QT笔记之关闭子线程 1 这里为什么要单独写多一篇文章来说线程的关闭呢 主要是想让大家提升印象 养成资源回收的好习惯 任何时候都要想起开辟过的内存回收 这里的关闭子线程上一篇也写到了 就是利用关闭窗口时调用槽函数回收掉 2 具体步骤

随机推荐

  • 集线器、交换机、路由器、网桥、网关之间的区别

    集线器 HUB 集线器就是将网线集中到一起的机器 也就是多台主机和设备的连接器 集线器的主要功能以扩大网络的传输距离 是中继器的一种形式 区别在于集线器能够提供多端口服务 也称为多口中继器 集线器在OSI RM中的物理层 集线器的基本功能是
  • Ubuntu20.04搭建ftp服务(亲测通过)

    安装 sudo apt get install vsftpd 设置开机启动并启动ftp服务 systemctl enable vsftpd systemctl start vsftpd 启动 查看其运行状态 systemctl status
  • oracle insert into select 大数据量_Oracle的批量插入操作

    MySQL中支持一条SQL语句执行批量插入 Oracle中支持的形式有些不同 但是殊途同归 用的就是insert all into语法 创建测试表 SQL gt create table a1 id number a varchar2 1
  • 苹果手机怎么升级鸿蒙系统,鸿蒙2.0首个升级版本 与苹果的iOS14.3的安装包相当...

    华为如果失去了自研芯片 与国内其他手机厂商就没有区别了吗 并不是这样 与其他手机厂商完全依赖国外资源 仅仅只是组装零件不同 华为在没有自研芯片后 还有自研的鸿蒙系统 在去年年底华为就发布了鸿蒙2 0系统的测试版本 允许开发者自行申请进行测试
  • 时间序列概念及主要模型(白噪声,AR, MA, ARMA, ARIMA)

    时间序列分析 时间序列是按照时间顺序 按照一定时间间隔取得的一系列观测值 怎样做时间序列分析 时间序列分析尝试找出序列值在过去呈现的特征模式 假定这种模式在未来能够持续 进而对未来进行预测 时间序列基本特征 趋势性 序列相关性 随机性 时间
  • 老毛桃通过虚拟光驱安装Window10

    1 电脑插入老毛桃启动进入winPE 2 点击 开始 所有程序 磁盘管理 虚拟磁盘驱动器 2 打开后点击挂载 选择映像文件 即U盘里面的iso文件 右下角选择只读媒体 点击确定 关闭窗口 3 点击 开始 所有程序 安装维护 WinNTSet
  • Keil 出现报错:undefined symbol

    这个问题的意思是出现未定义的符号 主要有下面两种解决方式 目录 c文件没有添加进路径 工程文件没有添加 c文件没有添加进路径 出现这个问题首先看一下是不是 c文件没有添加进路径 我们写好了 c文件之后 保存在文件夹里 还需要文件夹里的 c文
  • 支付全流程的测试

    聚合支付与微信和支付宝区别与联系 聚合支付 支付宝和微信扫同一个二维码都可以支付 支持多种支付方式 聚合支付是与多方合作的平台 支付宝 微信 京东 有合作关系 支付宝 微信 京东 为第三方持牌照 支付牌照 机构 为什么要使用聚合支付方式 统
  • 学习FPGA之四:FPGA开发方法

    FPGA是一个很特殊的芯片 可能在2个月前 我还对它一无所知 我们熟知的芯片都是CPU GPU 或者知道ASIC的概念 但实际上 FPGA已经走过了30个年头 它目前已经成为一个包含各种先进电路 逻辑单元 接口 芯片封装 制造等技术的 集大
  • 【MATLAB】模糊控制篇 常用隶属函数介绍和实现

    在Matlab中已经开发出了11种隶属函数 让初学模糊控制的同学容易一头雾水 到底这些隶属函数有什么区别 实现的函数效果是怎么样的 在实际应该怎么选择呢 matlab模糊控制器的隶属函数选择 Trimf 三角形隶属函数 Trapmf 梯形隶
  • cmd如何一次运行多行命令

    在使用sonar扫描本地代码时 需要在windows的中执行以下命令 mvn sonar sonar Dsonar projectKey compoment service Dsonar host url https sonar intra
  • 如何制作个人网站(如何搭建个人博客)

    本文共5220个字 预计阅读时间需要17分钟 所有文字摘自互联网 仅做配图处理 首先制作一个网站需要 域名即example com 虚拟空间或云服务器 网站代码制作工具或网站后台管理工具 你可以百度出模板 一定的编程技能和代码理解能力 优秀
  • 9个Linux 查看系统硬件信息命令(实例详解)

    在Linux下 我们精要遇到需要查看系统的硬件信息 这里我罗列了查看系统硬件信息的实用命令 并做了分类 实例解说 执行环境 ubuntu 16 04 1 cpu lscpu命令 查看的是cpu的统计信息 root ubuntu home p
  • Redis的使用

    使用之前记得启动redis服务并连接redis redis命令大全见如下连接 这里只给大家讲解一些常用的 redis命令手册https www redis net cn order 一 redis常用命令 1 对key操作的命令 1 查看所
  • CSR867x — sink工程的编译与下载(run)

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX 作 者 文化人 XX 联系方式 XX 版权声明 原创文章 欢迎评论和转载 转载时能告诉我一声就最好了 XX 要说的话
  • 怎么使用amd加速_PR剪辑应该怎么选硬件?英特尔CPU和英伟达显卡最合适

    大家好 欢迎来到降频评测室 本文章是科普这么一个东西 不少剪辑师常用的pr 这款剪辑软件有一个英特尔的核显加速的功能 已经出来相当长的一段时间了 但就我的观察 了解的人不多 要讲核显加速 必须先说一个东西 Adobe水银回放引擎 还有叫水银
  • Hystrix使用说明,配置参数说明

    一 什么情况下会触发fallback方法 名字 描述 触发fallback EMIT 值传递 NO SUCCESS 执行完成 没有错误 NO FAILURE 执行抛出异常 YES TIMEOUT 执行开始 但没有在允许的时间内完成 YES
  • 排序算法 —— 希尔排序(图文超详细)

    文章目录 希尔排序 直接插入排序的优化 1 分组思想 2 缩小增量的过程 3 排序步骤 3 1 排序五组数据的情况 3 2 排序两组数据的情况 3 3 排序一组数据的情况 4 代码分析 4 1 如何设置数据组数 4 2 直接插入排序实现思路
  • Java变量的作用域

    Java变量的作用域 在java中 一个变量的作用域为大括号 出了大括号就被销毁 例如 public class Test public static void main String args int sum 0 for int i 0
  • 45黑马QT笔记之Qt下的Udp的广播和组播

    45黑马QT笔记之Qt下的Udp的广播和组播 1 广播 在使用QUdpSocket类的writeDatagram 函数发送数据的时候 其中第二个参数host应该指定为广播地址 QHostAddress Broadcast此设置相当于QHos