概述
广播:由一台主机向该主机所在的子网内的所有主机发送数据的方式
广播只能用于UDP或者原始IP实现,不能用于TCP
以下几个协议都用到了广播
1.地址解析协议(ARP)
2.动态主机配置协议(DHCP)
3.网络时间协议(NTP)
特点:
处于同一子网的所有主机都必须处理数据
UDP数据包会沿着协议栈向上一直到UDP层
运行音视频等较高速率工作的应用,会带来大负担
限制于局域网
广播的地址
定向广播地址 主机ID全为1
1 例:对于192.168.220.0/24 定向广播地址为192.168.220.255
2.通常路由器不转发广播
受限广播地址:255.255.255.255
路由器从不转发改广播
示例代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <pthread.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>void sys_err(const char *str)
{
perror(str);
exit(1);
}int main(intargc,char*argv[])
{
intsockfd = socket(AF_INET,SOCK_DGRAM,0);
intopt =1;
setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&opt,sizeof(opt));//配置端口可以复用
structsockaddr_in dst_addr;
bzero(&dst_addr,sizeof(dst_addr));
dst_addr.sin_family = AF_INET;
dst_addr.sin_port = htons(9999);
dst_addr.sin_addr.s_addr = inet_addr("192.168.10.255");//广播主机地址为全1inti =0;
for(i =0; i <3;i++){
sendto(sockfd,"broadcast",strlen("broadcast"),0(structsockaddr*)&dst_addr,sizeof(dst_addr) sleep(1);
}
close(sockfd);
return 0;
}









网友评论