宁波网站建设一般多少钱,wordpress 父分类名称,wordpress category 参数,网页设计相关书籍1、今天测试组播包发现#xff0c;组播数据只能在默认网卡发送成功#xff0c;多次交叉测试依然这样#xff0c;所以和网卡的配置无关
#xff08;我的是双网卡#xff09; 2、最后搜源码看#xff0c;才发现有一段代码如下#xff1a;
struct netif *
ip4_route(cons…1、今天测试组播包发现组播数据只能在默认网卡发送成功多次交叉测试依然这样所以和网卡的配置无关
我的是双网卡 2、最后搜源码看才发现有一段代码如下
struct netif *
ip4_route(const ip4_addr_t *dest)
{
#if !LWIP_SINGLE_NETIFstruct netif *netif;LWIP_ASSERT_CORE_LOCKED();#if LWIP_MULTICAST_TX_OPTIONS/* Use administratively selected interface for multicast by default */if (ip4_addr_ismulticast(dest) ip4_default_multicast_netif) {return ip4_default_multicast_netif;}
#endif /* LWIP_MULTICAST_TX_OPTIONS */
在ip4_route函数中使能组播后LWIP_MULTICAST_TX_OPTIONS1貌似这个代码 限制死了发送数据的网卡啊
所以可以通过
1
void ip4_set_default_multicast_netif(struct netif *default_multicast_netif) { ip4_default_multicast_netif default_multicast_netif; }
函数将ip4_default_multicast_netif设置为NULL则取消这个限制 2或者通过ip4_set_default_multicast_netif强制设置一个网卡为默认组播网卡 3、问题来了怎么让两个网卡都发送组播数据呢
需要改ip4_route或者ip4_route_src 函数代码啊 默认的lwip中未定义LWIP_HOOK_IP4_ROUTE_SRC也未定义ip4_default_multicast_netif所以组播过程也会按照正常发包的流程目的ip因为是组播的所以和任何网卡的ip网段都不匹配所以会定位到默认网卡发送数据
4、最后再贴一下这个数据流图