【Linux学习笔61】广播与组播

引言

广播与组播,顾名思义就是一对多进行通信的关系。那么很容易理解就是,TCP是点对点的单播通信,只有UDP中才存在广播与组播。

广播

同时将数据发给局域网中的所有主机,称之为广播。

广播地址:

  • 以192.168.1.0(255.255.255.0)为例子,最大的主机地址为:192.168.1.255代表该网段的广播地址。因此我们能只需要发到该地址的数据包就可以让整个局域网的主机都接收。
  • 255.255.255.255在所有网段中都代表广播地址

广播的实现

  1. 创建用户数据报套接字(UDP)
  2. 设置套接字的属性(setsockopt)设置套接字属性允许广播
  3. 将接收方地址指定为255.255.255.255
  4. 指定端口信息
  5. 发送数据包

广播的代码实现:

发送方:
在这里插入图片描述
接收方:
【Linux学习笔记52】socket编程之UDP协议中的接收端代码一样

代码运行结果:

在这里插入图片描述

组播

  • 组播是介于单播与广播之间的一种方式,单播只能一对一,而广播则发给所有主机,过多的广播会大量占用网络带宽。
  • 组播作为一种折中的方式,只有加入某个组播的小组的主机才能接到数据。
  • 因此,组播完美的避开广播的负载,又解决了一对多的关系。

组播地址

在网络地址中,有这么的几类:(这里只介绍D类地址,详细百度一下)

  • D类地址,又称为组播地址。范围是:224.0.0.1-239.255.255.255

组播的实现

  1. 创建UDP套接字
  2. 加入多播组(setsockopt)
  3. 设置套接字属性

在这里插入图片描述

代码实现:

接收信息:

在这里插入图片描述
发送函数:
在这里插入图片描述

代码运行结果:

在这里插入图片描述

发布了91 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/RayCongLiang/article/details/101369891