RAK439如何实现UDP的server广播,上位机client广播怎么都没法让439接收到包



  •   //udp server建立代码如下
      int RAK_UdpServer(uint16_t lPort)
      {
        SOCKADDR_IN     LocalAddr;
          static int      tmp_sockfd =INVAILD_SOCK_FD;
          int             sockfd;
          int    ret;
        
        //filling the UDP server socket address
        LocalAddr.sin_family = AF_INET;
        LocalAddr.sin_port = htons((uint16_t)lPort);
        LocalAddr.sin_addr = htonl((uint32_t )0xffffffff);
    
        // creating a UDP socket
        if(tmp_sockfd == INVAILD_SOCK_FD)
        {
          tmp_sockfd = socket(AF_INET,SOCK_DGRAM, 0);
          if (tmp_sockfd < RW_OK )
          {
            return RW_ERR;
          }
        }
        // binding the UDP socket to the UDP server address
        ret = bind(tmp_sockfd, (SOCKADDR_IN *)&LocalAddr, sizeof(SOCKADDR_IN));
        if (ret == RW_ERR || ret == RW_ERR_TIME_OUT || ret ==RW_ERR_SOCKET_INVAILD)
        {
          close(tmp_sockfd);
          return ret;
        }
    
        if (ret == RW_OK) 
        {
          sockfd = tmp_sockfd;
          tmp_sockfd = INVAILD_SOCK_FD;
          return sockfd;
        }
        
        return ret;
    
    }


  • 上位机UDP Client指定IP地址给模块发,模块能收到吗?



  • 指定发是可以接收到的



  • @xc.c 从上位机客户端指定发是可以接受到的,如果不指定server的IP把RAK439创建socket时候的LocalAddr.sin_addr 设置为INADDR_ANY,也还是不行



  • @xc.c stm32F1的驱动里面没看到有设置socket成广播模式的函数,不会只能单播吧?



  • 你是谁广播?电脑还是模块广播?



  • @xc.c 电脑是udp的client,广播发送,RAK439是udp的server。



  • @xc.c 而且现在用模块做tcp的server,会遇到开adc的dma造成单片机发送一段时间就死机,用的nos的库,发送间隔是50ms,每包50个字节


登录后回复
 

与 RAK支持中心 的连接断开,我们正在尝试重连,请耐心等待