zoukankan      html  css  js  c++  java
  • 广播和组播

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

  • 相关阅读:
    windows cmd 编码
    ARM伪指令
    System.load 和 System.loadLibrary
    用GDB调试程序
    ARM指令集
    ARM寻址方式
    abortion
    Oxford City Jealous Lover
    everyday words
    【转】高效率的C++函数返回值
  • 原文地址:https://www.cnblogs.com/CHYI1/p/5515531.html
Copyright © 2011-2022 走看看