SylixOS广播收发demo

SylixOS广播收发demo

SylixOS的广播使用注意事项:
1. SylixOS网卡的掩码为:255.255.255.0;
2.SylixOS广播接收程序需要设置SO_BROADCAST(请参考例程)。
SylixOS广播参考例程:
广播接收端:
  1.  #include <stdio.h>
  2.  #include <arpa/inet.h>
  3.  #include <stdlib.h>
  4.  #include <unistd.h>
  5. #include <sys/socket.h>

  6.  int main(int argc,char *argv[])
  7.  {
  8.      int fd;
  9.      struct sockaddr_in server;
  10.      struct sockaddr_in client;
  11.      int status;
  12.      int so_boradcast=1;

  13.      //IPv4 UDP
  14.      fd=socket(AF_INET,SOCK_DGRAM,0);
  15.      //端口号
  16.      server.sin_port=htons(8888);
  17.      server.sin_addr.s_addr=INADDR_ANY;
  18.      server.sin_family=AF_INET;


  19.      setsockopt(fd,SOL_SOCKET,SO_BROADCAST,&so_boradcast,sizeof(so_boradcast));

  20.      //绑定地址
  21.      status=bind(fd,(struct sockaddr *)&server,sizeof(struct sockaddr));
  22.      if(status<0)
  23.      {
  24.          printf(" bind() error\n");
  25.          exit(1);
  26.      }
  27.      //接收Buffer
  28.      char buff[1024];
  29.      socklen_t len=sizeof(struct sockaddr);

  30.      while(1)
  31.      {
  32.          //接收
  33.          recvfrom(fd,buff,1024,0,(struct sockaddr *)&client,&len);
  34.          //打印接收到的信息
  35.          printf("%s\n",buff);
  36.      }

  37.      return 0;
  38.  }
      广播发送端:

  1.  #include <stdio.h>
  2.  #include <arpa/inet.h>
  3.  #include <string.h>
  4.  #include <sys/ioctl.h>
  5.  #include <net/if.h>
  6.  #include <unistd.h>
  7. #include <sys/socket.h>

  8.  int main(void)
  9.  {
  10.      struct sockaddr_in all;
  11.      int fd;
  12.      //广播消息
  13.      char buff[]="this is a broadcast message";
  14.      int so_boradcast=1;

  15.      //IPv4 UDP
  16.      fd=socket(AF_INET,SOCK_DGRAM,0);
  17.      //广播地址,用ifconfig查看得到
  18.      all.sin_addr.s_addr=inet_addr("192.168.7.255");
  19.      all.sin_family=AF_INET;
  20.      //端口号
  21.      all.sin_port=htons(8888);
  22.      //设置socket为广播
  23.      setsockopt(fd,SOL_SOCKET,SO_BROADCAST,&so_boradcast,sizeof(so_boradcast));
  24.      while(1)
  25.      {
  26.          //广播
  27.          sendto(fd,buff,strlen(buff),0,(struct sockaddr *)&all,sizeof(all));
  28.          //延时1秒
  29.          sleep(1);
  30.      }
  31.      return 0;
  32.  }


    • Related Articles

    • 冗余网卡使用笔记

      1. 适用范围 本文档适用对象(SylixOS 驱动、应用工程师或用户等),适用对象应该具备 SylixOS 驱动、应用方面的知识,本文档用于调试网卡冗余工程。 2. 原理概述 2.1 网卡冗余       冗余含义是指人为增加重复部分,其目的是用来对原本的单一部分进行备份,以达到增强其安全性的目的,这在信息通信系统当中有着较为广泛的应用。 3. 准备工作 3.1 环境准备 硬件:支持安装 SylixOS 并拥有两个以上网卡设备机或板卡。 软件:SylixOS。 ...
    • SylixOS 的 socket 属性设置

      SylixOS 主要支持以下socket属性 协议族 Level(级别) optname(选项名) Get Set 说明 标志 数据类型 AF_PACKET SOL_PACKET PACKET_ADD_MEMBERSHIP   * 加入多播组     PACKET_DROP_MEMBERSHIP   * 离开多播组     PACKET_RECV_OUTPUT   * 接收链路层数据包     PACKET_RX_RING   *       PACKET_VERSION   *       ...
    • SylixOS 中冗余网卡主从模式等具体绑定操作步骤

      1. 适用范围 适用于需要进行冗余网卡绑定的操作,例如需要配置双网卡绑定主从模式的情况。 2. 原理概述 网卡 bond 是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术。 网卡冗余:冗余含义是指人为增加重复部分,其目的是用来对原本的单一部分进行备份,以达到增强其安全性的目的,这在信息通 信系统当中有着较为广泛的应用。 3. 准备工作 硬件:支持安装  SylixOS  并拥有两个以上网卡设备机或板卡; 软件:SylixOS 系统镜像。 ...
    • Linux工程移植笔记-基于arping案例

      1. arping简介 arp(Address Resultion Protocol)地址解析协议,是通过解析网络层地址来找寻数据链路层地址。 ...
    • SylixOS 协议栈学习(一)网络接口结构

             1) netif 的结构体来描述一个硬件网络接口的。     struct netif {                                                         struct netif *next;    // 指向下一个 netif 结构的指针         struct ip_addr ip_addr;    // IP 地址相关配置         struct ip_addr netmask;         struct ...