Skip to content
On this page

多点通信


标签:linux/network  

单播

  1. 主机之间一对一的通信模式,交换机以及路由器对数据只能进行转发,不做复制
  2. 每次只有两个实体互相通信,发送端和接收端都是

广播

  1. 主机之间的一对多的通信方式,所有在同一局域网内的主机都可以接收到广播信息;
  2. 禁止广播数据穿过路由器,防止广播数据影响大面积主机。广播只能做局域网内通信;
  3. 只有 UDP 能够广播,因为不需要应答
  4. 广播地址:有效网络号 + 全是 1 的主机号
  • 例如:192.168.31.xxx ---> 192.168.31.255
  • 255.255.255.255:给所有网段中的所有主机发送广播信息,但是广播信息无法穿过路由器

1. 广播的发送流程(类似 UDP 的客户端)

  1. socket 创建报式套接字
  2. setsockopt 设置允许广播 ⭐
  3. bind 非必须绑定
  4. 填充接收放的地址信息结构体
  • IP: 广播IP(例如 192.168.31.255 或者填 255.255.255.255,与接收方绑定的一致)
  • PORT:接收方绑定的端口号
  1. sendto 发送广播信息

🗒广播发送端代码

2. 广播的接收方流程(类似 UDP 服务器)

  1. socket 创建报式套接字
  2. 填充接收方自生的地址信息结构体
  • IP:广播 IP (例如 192.168.31.255 或者 255.255.255.255 或者 0.0.0.0
  • PORT:接收方自身的端口号,要与发送方填充的一致

🗒广播接收端代码

💡 0.0.0.0

本机所有可用 IP 地址,例如:本机IP 192.168.31.69,本地回环 127.0.0.1,广播 IP,组播 IP

组播

  1. 广播的方式是发送给同一网段下的所有主机,过多的广播会占用大量带宽,影响正常通信,且广播只能做局域网内通信
  2. 主机之间一对一组的通信模式,只有加入了同一个组的主机可以接收到此组内的所有数据
  3. 组播可以做广域网的通信
  4. 组播地址:D类 IP 地址 224.0.0.0~239.255.255.255

1. 组播的发送方流程(类似于 UDP 的客户端)

  1. socket:创建报式套接字
  2. bind:非必须绑定
  3. 填充接收放的地址信息结构体
  • IP: 接收方绑定的组播 IP(224.0.0.0~239.255.255.255 与接收方绑定一致)
  • PORT:接收方绑定的端口号
  1. sendto:发送广播信息

🗒组播发送端代码

2. 组播的接收方流程(类似于 UDP 的服务器)

  1. socket 创建报式套接字
  2. setsockopt 加入多播组⭐
    • (level:IPPROTO_IP, optname: IP_ADD_MEMBERSHIP)
  3. bind 非必须绑定
  4. 填充接收放的地址信息结构体
  • IP: 接收方绑定的组播 IP(224.0.0.0~239.255.255.255 或者 0.0.0.0
  • PORT:接收方自身的端口号,要与发送方填充的一致
  1. recvfrom 接收广播信息

🗒组播接收端代码

Last updated: