什么是广播
数据包发送方式只有一个接受方,称为单播
如果同时发给局域网中的所有主机,称为广播
只有用户数据报(使用UDP协议)套接字才能广播
广播地址:
一个网络内主机号全为1的IP地址为广播地址
发到该地址的数据包被所有的主机接收
255.255.255.255在所有网段中都代表广播地址、
广播的实现
分类的IP地址
多播IP地址
在 IP 多播数据报的目的地址需要写入多播组的标识符。
多播组的标识符就是 IP 地址中的 D 类地址(多播地址)。
地址范围:224.0.0.0 ~ 239.255.255.255
每一个 D 类地址标志一个多播组。
多播地址只能用于目的地址,不能用于源地址。
组播的实现
创建用户数据报套接字
加入多播组
绑定组播IP地址和端口
等待接收数据
struct ip_mreqn {
struct in_addr imr_multiaddr; /*IP 组播组地址*/
struct in_addr imr_address; /*本地接口的IP地址*/
int imr_ifindex; /*本地网卡的编号*/
}
if(setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)) < 0){
perror("setsockopt");
exit(0);
}
struct ip_mreq {
struct in_addr imr_multiaddr; /*IP 组播组地址*/
struct in_addr imr_interface; /*本地接口的IP地址*/
}
if(setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)) < 0){
perror("setsockopt");
exit(0);
}