现在开发的一个项目中,需要实现两个4G模组同时在线,在实验的过程中可以得知,两个4G模组虽然都成功获取到了各自的IP地址,但是当两个同时使用时,两个模组都建立socket链接,即使返回状态是已连接成功了,但是只有一个模组能上线,当其中一个模组建立的socket发现数据收发失败时,尝试切换默认网卡重新建立socket,此时该模组下的socket正常,另一个模组的链接则数据收发失败,反复交替数据收发失败。
由此推断,一个LWIP的PPP组件建立的数据链路只能够同一时间支持一个模组。
我的这个推断不知道是否成立,请教各位大佬是否有过调试RT-Thread多网卡同时上线的经验,解决这个问题应该从何入手处理。
有一个不成熟的解决方法,是否可以通过建立多一个LWIP线程各自处理对应模组的数据链路收发,但是这个过程建立产生的socket描述符是否能正确地映射至相应的ppp链路上。
感谢你的回复,对于数据流的方向,我先去尝试一下当我串口接收到ppp协议帧的时候,及时切换默认网卡,然后传入至LWIP协议栈内处理,发送的时候也做同样的操作,发送前先切换一下默认网卡,使各自的数据传送至相应的网卡上处理数据。
其实上述的问题并不是十分致命,socket可以通过重新建立链接向服务器主动发送数据,大部分业务都是属于主动上报的方式,属于短连接,但对于长链接且服务器会主动发送控制命令的通讯链接,则需要使用一些策略去解决。
同意,只要理解了lwIP的架构和数据处理流程,至于这么灵活运用就看个人的喜好了。