lwip协议中udp包的接收与发送

2019-07-16 20:04发布

lwip协议中为什么我udp能发包却接收不到包

void  UDPDataRecv(void *arg, struct udp_PCB *upcb, struct pbuf *p,
                 struct ip_addr *addr, u16_t port)
{
  // char *a;
// uint8_t i=0;
   struct pbuf *q;
  struct ip_addr destAddr = *addr;
  if(p != NULL)                          /* 如果收到的数据不为空   */            
  {
      for(q=p; q != NULL; q = p->next)
    {
   //   c = q->payload;
   //  a=q->payload;
    //pbuf_copy_partial(p, UDPData, p->len, 0);        
    udp_sendto(upcb,q->payload,&destAddr,5000);                    /* 将收到的数据再发送出去 */            
    }                  /* 释放缓冲区数据 */
  }
  //pbuf_free(p);
}

//}
void UDPNetInit(void)
{
   struct udp_pcb * UDPpcb;
     struct ip_addr ipaddr1;
     struct ip_addr netmask;
      struct ip_addr gw;
     IP4_ADDR(&ipaddr1,192,168,1,125);
     IP4_ADDR(&netmask, 255, 255, 255, 0);                //子网掩码
     IP4_ADDR(&gw, 192, 168, 1, 1);                //网关
    //
    // Start listening for incoming TFTP requests.
    //
    UDPpcb = udp_new();
//   UDPpcb->so_options |= SOF_BROADCAST;
    udp_bind(UDPpcb,IP_ADDR_ANY,5000);   /* 绑定本地IP地址 */
    udp_connect(UDPpcb,&ipaddr1,1000); /* 连接远程主机 */
    udp_recv(UDPpcb, UDPDataRecv, NULL);
}
这是代码

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。