lwip - 检查两个接口的 Internet 可用性
问题描述
我正在尝试检测已连接的接入点 (AP) 的互联网可用性。我的实现包括使用 LwIP 堆栈和两个网络接口。场景描述如下:
案例一:Ping成功
- 接口 0 连接到 AP1(有互联网)
- 接口 1 连接到 AP2(无互联网)
- ping www.google.com
- LwIP 堆栈使用默认网络接口,即接口 0 来 ping google。
在这种情况下,ping 会成功,因为我在 AP1 上有互联网连接,但如果连接反向,ping 会失败,因为它使用默认网络接口。
案例 2:Ping 失败
- 接口 0 连接到 AP2(无互联网)
- 接口 1 连接到 AP1(有互联网)
- ping www.google.com
- LwIP 堆栈使用默认网络接口,即接口 0 来 ping google。
在决定使用哪个接口发送 ping 数据包之前,我是否可以检测或检查 Internet 连接?
根据我通过连接 Wi-Fi 和以太网在笔记本电脑上观察到的情况,它在这两种情况下都可以成功 ping。请帮忙谢谢。
苏苏~
解决方案
我知道你一个月前问过这个...
LWIP 将所有传出流量定向到 default_netif。解决此问题的唯一方法是动态更改 default_netif 或直接在特定的 netif 上发送。
确定每个网络接口上是否有互联网可用的一种可能解决方案是针对每个 netif,使用 netifapi_netif_set_default 将其设置为默认 netif,然后执行 ping。
或者,您可以直接在每个网络接口上手动发送诸如 DNS 解析请求 UDP 数据包之类的内容并检查响应。
推荐阅读
- python - 使用已清理的 csv 日志 python 进行页面点击分析
- angular - 从我的组件单元测试中测试服务调用
- apache-spark - 根据条件在 spark 数据集中添加列值
- javascript - 测试 Angular 可观察对象是否发出值或序列
- netsuite - 如何在 Suitescript 中自动生成 GUID
- r - lapply 错误 - 具有倍数的 PGLS (caper) 比较.data
- windows - 如何通过 ssh 从 Windows 机器上进行 git clone?
- tfs - 无法将代码添加到 TFS 2018 中的存储库
- json - 将一系列 JsObject 保存到 JSON 文件中
- pycharm - 为什么我的 Pycharm 项目看不到文件夹?FileNotFoundError:[Errno 2] 没有这样的文件或目录:'../input/stage_2_train_labels.csv'