美文网首页
广播(broadcast)

广播(broadcast)

作者: 锈色的栅栏 | 来源:发表于2024-11-01 09:34 被阅读0次

概述

广播:由一台主机向该主机所在的子网内的所有主机发送数据的方式
广播只能用于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");//广播主机地址为全1

    inti =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;
}

相关文章

网友评论

      本文标题:广播(broadcast)

      本文链接:https://www.haomeiwen.com/subject/yfgsdjtx.html