网络编程(六)
- 广播&组播
- 广播
- 步骤
- 组播
- 步骤
广播&组播
广播
是一种基于1发送多接收的模型 (发送方和接收方)
广播是在局域网内实现的(发送到广播地址上的消息是会被局域网内同网段的所有主机进行接收,接收方的主机不能拒绝,除非接收方关闭了相应的接收消息的进程。)
弊端:广播会出现大量宽带的问题,继而出现“广播风暴“的现象。
广播实现的思路:
发送方可以将数据给局域网内某网段的广播地址上推送消息,同网段之后的所有主机就可以接收到。
广播地址的形式:保留网络地址不变(子网掩码也是默认形式)的情况下,将主机地址的最大值取到
255,该IP地址就称为“广播地址”。
eg:IP地址为:192.168.13.110 子网掩码为:255.255.255.0 —》广播地址为:192.168.13.255
步骤
- 设计广播发送和接收程序只能使用数据报套接字
- 广播地址:是该局域网中IP地址最大的地址,如192.168.15.255
- 万能广播地址:255.255.255.255在所有网段中都代表广播地址
步骤:
发送端:client
- socket创建数据报套接字
- setsockopt设置允许广播包
- sendto():IP为广播地址
接收端:server
- socket
- bind
- recvfrom
组播
单播方式只能发给一个接收方。
广播方式发给所有的主机。过多的广播会大量占用网络带宽,造成广播风暴,影响正常的通信。
组播(又称为多播)是一种折中的方式。只有加入某个多播组的主机才能收到数据。
多播方式既可以发给多个主机,又能避免象广播那样带来过多的负载(每台主机要到传输层才能判断广播
包是否要处理)
D类IP(网络地址的最高位必须为1110):组播地址!!!
组播地址的范围:224.0.0.0 ~ 239.255.255.255
224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地
址供路由协议使用;
224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;
224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;
239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效
步骤
发送端(client):
- socket
- sendto(),IP地址为组播地址
接收端(server):
- socket
- 加入组播组:setsockopt
- bind
- recvform