C. *_*yba 1 c iot azure-iot-hub
我试图了解 Azure IoT C SDK 的特定连接和错误状态。
我可以注册IoTHubClient_SetConnectionStatusCallback回调以便接收IOTHUB_CLIENT_CONNECTION_STATUS和IOTHUB_CLIENT_CONNECTION_STATUS_REASON。
第一个的值是IOTHUB_CLIENT_CONNECTION_AUTHENTICATED和IOTHUB_CLIENT_CONNECTION_UNAUTHENTICATED,我认为它只是意味着“已连接”和“未连接”。然而原因更有趣:
IOTHUB_CLIENT_CONNECTION_EXPIRED_SAS_TOKENIOTHUB_CLIENT_CONNECTION_DEVICE_DISABLEDIOTHUB_CLIENT_CONNECTION_BAD_CREDENTIALIOTHUB_CLIENT_CONNECTION_RETRY_EXPIREDIOTHUB_CLIENT_CONNECTION_NO_NETWORKIOTHUB_CLIENT_CONNECTION_COMMUNICATION_ERRORIOTHUB_CLIENT_CONNECTION_OK所以我的第一个问题是:各自原因的语义是什么?它们什么时候发生?通讯错误会带来什么后果?该错误非常笼统,可能只是意味着“我们不想明确指定的任何错误”。
我的第二个问题超出了这个范围。我正在尝试使用 X.509 证书。但是,由于某些要求,我的证书可能不再有效或已删除的设备 ID。我可以通过使用可用的原因以某种方式区分这些情况吗?当我尝试连接一个不存在的 ID 时,我只是得到了IOTHUB_CLIENT_CONNECTION_COMMUNICATION_ERROR. 从我的角度来看,我不再需要尝试连接到 IoT 中心,因为我的设备不存在。但通信错误可能是任何事情。当我尝试使用无效的证书或私钥连接时,出现了同样的问题。
每次我尝试时,我都会得到错误:
Error: Time:Thu May 25 12:04:00 2017 File:~/azure-iot-sdk-c/iothub_client/src/iothubtransport_amqp_messenger.c Func:process_state_changes Line:1563 messagesender reported unexpected state 4 while messenger is starting
Error: Time:Thu May 25 12:04:00 2017 File:~/azure-iot-sdk-c/iothub_client/src/iothubtransport_amqp_device.c Func:device_do_work Line:848 Device 'MyDevice' messenger failed to be started (messenger got into error state)
Run Code Online (Sandbox Code Playgroud)
根据这些信息,我无法确定何时连接或重新连接。
小智 5
感谢您的提问。
您上面列出的原因是由以下条件触发的:
IOTHUB_CLIENT_CONNECTION_EXPIRED_SAS_TOKEN
IOTHUB_CLIENT_CONNECTION_DEVICE_DISABLED
IOTHUB_CLIENT_CONNECTION_BAD_CREDENTIAL
IOTHUB_CLIENT_CONNECTION_RETRY_EXPIRED
IOTHUB_CLIENT_CONNECTION_NO_NETWORK IOTHUB_CLIENT_CONNECTION_COMMUNICATION_ERROR
IOTHUB_CLIENT_CONNECTION_OK