由于广播和组播不会建立连接,所以只能使用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
通常广播和组播用来发现局域网中的服务端.