广播和组播

Posted 嵌入式的学习之旅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了广播和组播相关的知识,希望对你有一定的参考价值。

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

以上是关于广播和组播的主要内容,如果未能解决你的问题,请参考以下文章

广播和组播

Qt网络编程之搭建Udp通信单播组播广播

IP组播

IPV6 组播学习理解

IGMPv3广播电视网络应用案例之PIM-SSM技术

单播、广播和多播IP地址