[mw_shl_code=c,true]//UDP测试代码求指教
//设置远端IP地址
void udp_demo_set_remoteip(void)
{
lwipdev.remoteip[0]=lwipdev.ip[0];//192
lwipdev.remoteip[1]=lwipdev.ip[1];//168
lwipdev.remoteip[2]=lwipdev.ip[2]; //1
lwipdev.remoteip[2]=234;
}
void udp_democ_callback(void *arg,struct udp_pcb *upcb,struct pbuf *p,struct ip_addr *addr,u16_t port)
{
struct ip_addr rmtipaddr;
IP4_ADDR(&rmtipaddr,lwipdev.remoteip[0],lwipdev.remoteip[1],lwipdev.remoteip[2],lwipdev.remoteip[3]);
udp_connect(upcb,&rmtipaddr,8089);//UDP连接指定远端IP和端口的服务器
udp_sendto(upcb,p,&rmtipaddr,port);
pbuf_free(p);
}
void udp_democ_init(void)
{
struct udp_pcb *upcb;
err_t err;
udp_demo_set_remoteip();//设置远端IP
upcb=udp_new();
err=udp_bind(upcb,IP_ADDR_ANY,8089);//绑定本地IP和端口
if(err==ERR_OK)
{
udp_recv(upcb,udp_democ_callback,NULL);//注册回调函数
}
}[/mw_shl_code]
UDP测试,网络助手发给开发板,开发板返回给助手,这个代码有什么问题呢
电脑IP 助手IP设置了192.168.234,开发板IP 192.168.1.30,助手跟开发板端口都是8089
助手发送1, 助手框显示发送成功,但是没有接收到开发板返回1 是怎么回事呢?
1.会不会是回调函数没有注册进去?怎么判断回调函数有没有注册进去呢?
2.UDP接收到数据后LWIP会遍历链表找相应的控制块,问题是LWIP怎么知道有数据接收的呢?有人说内核自动处理的,怎么感觉做了系统?我407没做系统额
新手求指教... |