当前位置: 代码迷 >> 单片机 >> lwIP中的UDP客户端,该如何处理
  详细解决方案

lwIP中的UDP客户端,该如何处理

热度:53   发布时间:2016-04-28 15:04:02.0
lwIP中的UDP客户端
大家好,在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,
记得有个文档,我找下