Необработанная широковещательная передача LWIP UDP

Итак, у меня есть работающий пример TCP Echo. То, что я пытаюсь сделать, это иметь возможность получать TCP-передачи, а также отправлять данные по TCP и UDP. Я использую необработанный LWIP, и у меня будет приложение для ПК, с которым я буду взаимодействовать. Я хочу иметь возможность отправлять широковещательную рассылку UDP или одноадресную рассылку TCP по запросу. У меня возникают проблемы, когда я получаю ошибку -6 ( ERR_VAL -6 /* Недопустимое значение. */) из функции sendto. Любая информация о том, что я могу упустить, будет полезна. Мой первый проход по работе с широковещательной передачей UDP здесь (на данный момент я только что добавил эту функцию в конец echo.c):

void echo_tx()
{

// Attempt a UDP Broadcast
// l_udp_pcb
  err_t wr_err = ERR_OK;
  struct pbuf *p = pbuf_alloc(PBUF_TRANSPORT, 1024, PBUF_RAM);
  l_udp_pcb = udp_new();
  wr_err = udp_bind(l_udp_pcb, IP_ADDR_ANY, 0);
  wr_err = udp_connect(l_udp_pcb, IP_ADDR_ANY, 10);
  unsigned char buffer_send[1024] = "My Name Is What";
  p->payload = buffer_send;
  p->len = 1024;
  p->tot_len = 1024;
  wr_err = udp_sendto(l_udp_pcb,p, IP_ADDR_BROADCAST, 10);
  if(wr_err != ERR_OK)
  {
    wr_err = udp_sendto(l_udp_pcb,p, IP_ADDR_BROADCAST, 10);
  }
  pbuf_free(p);
}

person M_J    schedule 06.06.2017    source источник


Ответы (2)


Вам нужно установить опцию широковещательной передачи на плате после того, как вы распределите ее с помощью udp_new():

ip_set_option(l_udp_pcb, SOF_BROADCAST);
person D Krueger    schedule 06.06.2017

вот как вы должны отправлять данные после привязки

char msg[] = "testingrg";
struct pbuf *p;

        while (1)
{
    //count++;
    //Allocate packet buffer and send to the remote host
    p = pbuf_alloc(PBUF_TRANSPORT, sizeof(lwiperf_txbuf_const), PBUF_RAM);
    memcpy(p->payload, &lwiperf_txbuf_const, sizeof(lwiperf_txbuf_const));

    err1 = udp_send(udpecho_raw_pcb, p);

    pbuf_free(p); //De-allocate packet buffer

    //osDelay(200);

}
person Raza Abbas    schedule 04.08.2017