【问题标题】:aws_sdk: how can I identify if my device is connected to the aws serveraws_sdk:如何识别我的设备是否连接到 aws 服务器
【发布时间】:2021-10-31 20:05:06
【问题描述】:

我有一个启用 IoT 并与 AWS 服务器通信的设备 (esp32s2)。

设备正在通过路由器连接到互联网。我想从设备检查路由器是否连接到互联网。如果没有连接,我需要立即断开 mqtt 代理。

我知道发生了 aws_iot_yield,但在断开连接后更改客户端状态(约 5-10 分钟)需要花费太多时间。那么,有没有其他方法可以让我知道设备是否连接到 mqtt 代理或不使用 AWS sdk?

我想避免对某些地址/服务器使用 ping,因为它会增加资源的使用。

提前致谢!

【问题讨论】:

    标签: c aws-sdk esp32


    【解决方案1】:

    由于通过 Internet 与 AWS 服务器的连接取决于网络元素,因此了解您是否连接到 Internet 的唯一可靠方法是将包发送到已知地址并接收响应。最简单的方法是使用 ICMP (ping) 协议。通常 ping 最可靠的目的地是 Google DNS 服务器 8.8.8.8 或 8.8.4.4,它是一个集群服务,它总是在 ping 上进行回复。

    您可以控制两次 ping 之间的暂停以及您将在一个会话中发送多少次 ping 以保留资源。

    另一种方法是使用路由器,该路由器可以向监控设备发送链路状态已更改的消息(例如 SNMP 陷阱)。但这不是完全可靠的方法,因为路由器无法检测到与您的 AWS 服务器的连接丢失的所有情况。

    【讨论】:

      猜你喜欢
      • 2017-10-10
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 2014-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      相关资源
      最近更新 更多