首页 > 解决方案 > 检查两个接口的 Internet 可用性

问题描述

我正在尝试检测已连接的接入点 (AP) 的互联网可用性。我的实现包括使用 LwIP 堆栈和两个网络接口。场景描述如下:

案例一:Ping成功

  1. 接口 0 连接到 AP1(有互联网)
  2. 接口 1 连接到 AP2(无互联网)
  3. ping www.google.com
  4. LwIP 堆栈使用默认网络接口,即接口 0 来 ping google。

在这种情况下,ping 会成功,因为我在 AP1 上有互联网连接,但如果连接反向,ping 会失败,因为它使用默认网络接口。

案例 2:Ping 失败

  1. 接口 0 连接到 AP2(无互联网)
  2. 接口 1 连接到 AP1(有互联网)
  3. ping www.google.com
  4. LwIP 堆栈使用默认网络接口,即接口 0 来 ping google。

在决定使用哪个接口发送 ping 数据包之前,我是否可以检测或检查 Internet 连接?

根据我通过连接 Wi-Fi 和以太网在笔记本电脑上观察到的情况,它在这两种情况下都可以成功 ping。请帮忙谢谢。

苏苏~

标签: lwip

解决方案


我知道你一个月前问过这个...

LWIP 将所有传出流量定向到 default_netif。解决此问题的唯一方法是动态更改 default_netif 或直接在特定的 netif 上发送。

确定每个网络接口上是否有互联网可用的一种可能解决方案是针对每个 netif,使用 netifapi_netif_set_default 将其设置为默认 netif,然后执行 ping。

或者,您可以直接在每个网络接口上手动发送诸如 DNS 解析请求 UDP 数据包之类的内容并检查响应。


推荐阅读