广播和组播

由于广播和组播不会建立连接,所以只能使用UDP协议.

广播就是向局域网中的所有主机发送广播报文.

1、IPv4地址的表示{子网id,主机id}A/B/C/D/E类地址, -1表示所有位都为1的字段

2、子网广播地址,{子网id,-1},指定子网上所有接口的广播地址192.168.1.0/24 该子网上的广播地址192.168.1.255

3、受限广播地址{-1,-1}255.255.255.255

int sockfd=socket(AF_INET, SOCK_DGRAM, 0);

struct sockaddr_in servaddr;

bzero(&servaddr, sizeof(servaddr));

servaddr.sin_family = AF_INET;

servaddr.sin_port = htons(13); /* 13 is standard daytime server *///13可自己定义

inet_pton(AF_INET, “192.168.42.255”, &servaddr.sin_addr);//广播地址也可自己定义

int on=1;

setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on));//开启广播

int len=0;

sendto(sockfd, sendline, strlen(sendline), 0, servaddr, sizeof(servaddr));//发送,servaddr是广播地址

char recvline[MAXLINE+1];//加1是为了NULL。

socklen_t len;

struct sockaddr *preply_addr;

recvfrom(sockfd, recvline, MAXLINE, 0,preply_addr, &len);//preply_addr返回 发送数据主机的地址,len是地址的大小。

组播就是向和自己主机同一个地址组的主机发送报文.

1、组播IP地址
224.0.0.0 ~ 239.255.255.255

组播以太网地址(MAC地址)
开头高三个字节总是 01:00:5e

2、组播分为两部分:
  1、组播数据流 ,目的MAC地址为01:00:5e:xx:xx:xx
  224.25.25.25 的mac地址为01:00:5e:19:19:19

  2、组播控制流(IGMP v1,v2,v3)
  分三种报文:report(join),leave,query

该博客写的非常详细,可以参考一下http://blog.chinaunix.net/uid-22832715-id-2111502.html
通常广播和组播用来发现局域网中的服务端.

原文地址:https://www.cnblogs.com/CHYI1/p/5515531.html