lwIP中使用netconn接口如何接收广播消息

本文介绍了在使用lwIP的netconn接口进行UDP通信时遇到的无法接收广播消息的问题。通过深入 lwIP 源码,发现在udp.c的udp_input函数中存在条件限制。为了解决这个问题,需要在程序中添加特定语句以确保SO_BROADCAST选项设置正确,从而实现广播消息的接收。欢迎分享更多有效方法。
摘要由CSDN通过智能技术生成

近期在使用lwIP协议,使用其原生接口netconn接口进行UDP通信时,意外发现,尽然无法接收来自广播的消息,在经过一番查找资料中,发现平常大家在使用中,更多的选择是socket接口,导致关于netconn接口的资料少之又少,经过各种尝试无果,只能,在lwIP源码中查找是哪里引起的错误,最后发现是lwIP中的udp.c文件中的void udp_input(struct pbuf *p, struct netif *inp)函数中的下列语句导致无法接收广播信息:

#if IP_SOF_BROADCAST_RECV
            (broadcast && ip_get_option(pcb, SOF_BROADCAST) &&
             (ip_addr_isany(&pcb->local_ip) ||
              ip_addr_netcmp(&pcb->local_ip, ip_current_dest_addr(), &inp->netmask)))) {
#else /* IP_SOF_BROADCAST_RECV */
            (broadcast &&
             (ip_addr_isany(&pcb->local_ip) ||
              ip_addr_netcmp(&pcb->local_ip, ip_current_dest_addr(), &inp->netmask)))) {
#endif /* IP_SOF_BROADCAST_RECV */

在IP_SOF_BROADCAST_RECV为1的情况下,需要进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值