lwip协议中udp包的接收与发送
时间:10-02
整理:3721RD
点击:
lwip协议中为什么我udp能发包却接收不到包
void UDPDataRecv(void *arg, struct udp_pcb *upcb, struct pbuf *p,
struct ip_addr *addr, u16_t port)
{
// char *a;
// uint8_t i=0;
struct pbuf *q;
struct ip_addr destAddr = *addr;
if(p != NULL) /* 如果收到的数据不为空 */
{
for(q=p; q != NULL; q = p->next)
{
// c = q->payload;
// a=q->payload;
//pbuf_copy_partial(p, UDPData, p->len, 0);
udp_sendto(upcb,q->payload,&destAddr,5000); /* 将收到的数据再发送出去 */
} /* 释放缓冲区数据 */
}
//pbuf_free(p);
}
//}
void UDPNetInit(void)
{
struct udp_pcb * UDPpcb;
struct ip_addr ipaddr1;
struct ip_addr netmask;
struct ip_addr gw;
IP4_ADDR(&ipaddr1,192,168,1,125);
IP4_ADDR(&netmask, 255, 255, 255, 0); //子网掩码
IP4_ADDR(&gw, 192, 168, 1, 1); //网关
//
// Start listening for incoming TFTP requests.
//
UDPpcb = udp_new();
// UDPpcb->so_options |= SOF_BROADCAST;
udp_bind(UDPpcb,IP_ADDR_ANY,5000); /* 绑定本地IP地址 */
udp_connect(UDPpcb,&ipaddr1,1000); /* 连接远程主机 */
udp_recv(UDPpcb, UDPDataRecv, NULL);
}
这是代码
void UDPDataRecv(void *arg, struct udp_pcb *upcb, struct pbuf *p,
struct ip_addr *addr, u16_t port)
{
// char *a;
// uint8_t i=0;
struct pbuf *q;
struct ip_addr destAddr = *addr;
if(p != NULL) /* 如果收到的数据不为空 */
{
for(q=p; q != NULL; q = p->next)
{
// c = q->payload;
// a=q->payload;
//pbuf_copy_partial(p, UDPData, p->len, 0);
udp_sendto(upcb,q->payload,&destAddr,5000); /* 将收到的数据再发送出去 */
} /* 释放缓冲区数据 */
}
//pbuf_free(p);
}
//}
void UDPNetInit(void)
{
struct udp_pcb * UDPpcb;
struct ip_addr ipaddr1;
struct ip_addr netmask;
struct ip_addr gw;
IP4_ADDR(&ipaddr1,192,168,1,125);
IP4_ADDR(&netmask, 255, 255, 255, 0); //子网掩码
IP4_ADDR(&gw, 192, 168, 1, 1); //网关
//
// Start listening for incoming TFTP requests.
//
UDPpcb = udp_new();
// UDPpcb->so_options |= SOF_BROADCAST;
udp_bind(UDPpcb,IP_ADDR_ANY,5000); /* 绑定本地IP地址 */
udp_connect(UDPpcb,&ipaddr1,1000); /* 连接远程主机 */
udp_recv(UDPpcb, UDPDataRecv, NULL);
}
这是代码
我也遇到这个问题了。