大家好,在lwIP的客户端程序中,我在main函数中写了一个UDP客户端的发送程序,但是执行到udp_send(udppcb, p);时就死机了,麻烦大家帮我检测下是什么原因。
if (flag==1)
{
//主动发起一个UDP连接并发送数据
struct udp_pcb *udppcb;//UDP控制块
struct ip_addr ipaddr;//目标IP地址信息
struct pbuf *p;//pbuf对象
unsigned char senddata[34]={0x7E,0x86,0xF4,0x9D,0x10,0x04,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2B,0x02,0x0D};
//客户端发送数据
p = pbuf_alloc(PBUF_TRANSPORT ,sizeof(senddata), PBUF_RAM);//为pbuf开辟内存空间
p->payload = (void *)senddata;
p->len=p->tot_len=sizeof(senddata);
IP4_ADDR(&ipaddr, 192, 168, 182, 43);
udppcb = udp_new();
udp_bind(udppcb, IP_ADDR_ANY, 160);//绑定本地IP地址和端口
udp_connect(udppcb, &ipaddr, 60000);//连接到远程UDP主机
udp_send(udppcb, p);//发送数据
//udp_recv(udppcb, NULL, NULL);
pbuf_free(p);//销毁pbuf对象释放资源
flag=0;//清除标志位
}
------解决方案--------------------
bind绑定的对不对。抓包工具看一下,看p数据包是否发送出去。
要不试试udp_sendto,
记得有个文档,我找下