小弟初学rt-thread,在阅读netdev组件源码时,对于多网卡通信时关于检测网卡联网状态时有个疑问,疑问如下:
若系统中有网卡A与B,并且已经注册成功,设置网卡A为默认网卡;当网卡B底层网络状态发生改变时,会调用netdev_low_level_set_internet_status函数去检测网卡状态,并调用函数sal_check_netdev_internet_up建立udp通信判断网络状态,此时并未设置B为通信网卡,由于默认网卡是A,那么此时的网络状态获取应该也是A的,由于这些函数的调用是自发的,用户应用层若不采取操作的话,如何获正确取网络B的联网状态呢?
若系统只有一个网卡,并且是默认网卡,那么此时获取的网络联网状态时正确的;
问题是函数check_netdev_internet_up_work里面创建socket通信时,并未指定网卡B进行通信,默认还是用的网卡A进行的
@A_lanmao
刚刚又看了一下,好像是触发一些什么条件,才会设置回调。然后就会关闭socket
不是回调,而且网卡切换的问题,我没找到网卡自动切换的调用函数@没有认真
@A_lanmao
netif_set_default可以切换默认网卡
这个我知道,但进行联网状态确认进行socket通信时未调用该函数进行网卡切换,也没有看到bind函数绑定网卡ip@没有认真
你问题找到原因了吗,我现在也卡在这个问题上