首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原始LWIP UDP广播

原始LWIP UDP广播
EN

Stack Overflow用户
提问于 2017-06-06 16:23:41
回答 2查看 6.1K关注 0票数 1

所以,我找到了一个实用的TCP Echo示例。我试图完成的是能够接收TCP传输,以及通过TCP和UDP发送数据。我正在使用原始LWIP,并将有一个个人电脑应用程序,我将与之互动。我希望能够根据需要发送UDP广播或TCP Unicast。我遇到了问题,我得到了一个6( ERR_VAL -6 /*非法价值)。*/) sendto函数的错误。任何关于我可能缺少的信息都是有帮助的。我第一次使用UDP广播是在这里(现在我刚刚将这个函数添加到echo.c.c的底部):

代码语言:javascript
复制
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);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-06 19:15:02

使用udp_new()分配后,需要在PCB上设置广播选项。

代码语言:javascript
复制
ip_set_option(l_udp_pcb, SOF_BROADCAST);
票数 3
EN

Stack Overflow用户

发布于 2017-08-04 13:28:51

这是绑定后必须发送数据的方式。

代码语言:javascript
复制
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);

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44395214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档