|
我用NXP官方提供的lwip例程测试UDP收发数据,可以接收服务器的广播包,数据却发送不出去,不知什么原因,只好来此求助
使用回调函数处理接收数据,初始化代码如下:
struct udp_pcb *UdpPcb;
UdpPcb = udp_new();//UDP广播模式初始化
if (UdpPcb != NULL)
{
err_t err;
err = udp_bind(UdpPcb, IP_ADDR_BROADCAST, 2010);
if (err == ERR_OK)
{
udp_recv(UdpPcb, UDP_Receive, NULL);
}
}
回调函数代码如下:
void UDP_Receive(void *arg, struct udp_pcb *upcb, struct pbuf *p,
ip_addr_t *addr, u16_t port)
{
UDP_BOARDCAST_ACK ack = {0};
TCPUDP_PACKAGE *pkg = NULL;
if (p != NULL)
{
pkg = (TCPUDP_PACKAGE *) p->payload;//从TCP协义缓冲区里提取数据
p->len = p->tot_len = sizeof(UDP_BOARDCAST_ACK);
p->payload = (void*)&ack;
udp_sendto(upcb, p, addr, port);
pbuf_free(p);
}
}
|
|