繁体   English   中英

使用 ESP32 Arduino 检查互联网连接的最快方法

[英]Fastest way to check internet connection with ESP32 Arduino

更新:我知道,在这种情况下,WIFI AP 仍处于开启和活动状态,芯片不应该知道变化,但问题仍然存在。 我应该如何检查连通性?

在我的项目中,互联网连接非常重要。

经过一些测试,我发现如果我从路由器上拔下以太网电缆,ESP32 仍然认为它仍然连接到 WIFI,即使是

WiFi.status() == WL_CONNECTED

在这种情况下总是如此。

所以,我尝试 ping google.com 来检查连接。 这有效,但需要很长时间才能恢复结果。

我应该如何以最低的资源成本和时间检查连接?

由于乐鑫没有记录详细信息,甚至 WiFi.status() 也不可靠。 API 很容易出错,因为 github 上的问题显示。
所以实际上问题是。 你真正想检查什么? - 在我的定义中,互联网连接意味着我与 ISP 的线路(或天线)连接是不间断的。 这包括

  • 我的AP
  • 我的路由器
  • 我地下室的 ISP 光纤转换器,
  • 线路本身和
  • ISP 网关

这是我用来确定连接是否打开的。 我ping ISP 网关服务器的IP 地址。 所以你可以节省时间(没有 DNS 解析,没有在互联网上的节点上跳跃。
如果您的意思是定义的服务器上的某个服务是否可用,那很慢,但您可以 100% 确定。
只是澄清一下:“ESP32 仍然认为,它仍然连接到 WIFI” - 是的,这必须是真的,因为根据 API,这确保客户端到 AP 连接,而不是 AP 连接到其他地方。 通常,配置良好的路由器会通知其客户端连接丢失(在这种情况下是连接的 AP),并且这些通知(取决于它们的配置)它们的客户端(有时不会或很晚)

从技术上讲,该结果是正确的,因为您仍然连接到 wifi! 仅仅因为您拔掉以太网电缆并不意味着您的 wifi 停止。 这只是意味着您的 wifi 无法连接到互联网。 您可以尝试 ping 您的 isp 的 dns 服务器。 它比 Google 离您更近。 只是一个老人的闲言碎语……

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM