码迷,mamicode.com
首页 > 其他好文 > 详细

广播和组播

时间:2016-05-21 21:46:26      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

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

广播和组播

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!