初级会员

- 积分
- 165
- 金钱
- 165
- 注册时间
- 2016-4-22
- 在线时间
- 37 小时
|

楼主 |
发表于 2017-7-18 11:21:41
|
显示全部楼层
恩,我实现了,我用的是
g_pcb = udp_new();
udp_bind(g_pcb,IP_ADDR_BROADCAST,UDP_DEMO_PORT);
udp_recv(g_pcb,udp_server_recv,NULL);
void udp_server_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p,struct ip_addr *addr, u16_t port)
{
struct ip_addr destAddr = *addr;
destipaddr2 = *addr;
if(p != NULL)
{
printf("\r\nIP:%d.%d.%d.%d",((uint32_t)(destAddr.addr)>>0&0xff),((uint32_t)(destAddr.addr)>>8)&0xff,((uint32_t)(destAddr.addr)>>16)&0xff,((uint32_t)(destAddr.addr)>>24)&0xff);
printf("\r\nport:%d",port);
udp_flag = 1;
udp_sendto(pcb,p,&destAddr,port);
pbuf_free(p);
}
}
udp_flag 是标记收到广播数据,发送函数用的是原子哥的教程里的发送函数,这个子函数里的udp_sendto(pcb,p,&destAddr,port); 是发送不成功,我也不知道原因各参数都是正确的
|
|