iothub_client / src / iothubtransport_mqtt_common.c Func:InitializeConnection Line:2229 mqtt_client超时等待CONNACK

时间:2018-12-21 06:45:01

标签: azure-iot-sdk

OS:Linux SDK版本:2018-12-13 问题描述:

iothub_ll_telemetry_sample.c 当我在函数ThreadAPI_Sleep(60000)中放置60000时效果很好,但是尝试使用120000面临超时错误。

  

cd〜/ azure-iot-sdk-c / cmake / iothub_client / samples / iothub_ll_telemetry_sample   $ ./iothub_ll_telemetry_sample

问题的控制台日志:

  

创建IoTHub设备句柄   向IoTHub发送消息1   向IoTHub发送消息2   错误:时间:2018年12月21日星期五11:12:19文件:/home/test/azure-iot-sdk-c/iothub_client/src/iothubtransport_mqtt_common.c Func:InitializeConnection Line:2229 mqtt_client超时等待CONNACK   向IoTHub发送消息3   向IoTHub发送消息4   错误:时间:2018年12月21日星期五11:16:19文件:/home/test/azure-iot-sdk-c/iothub_client/src/iothubtransport_mqtt_common.c Func:InitializeConnection Line:2229 mqtt_client超时等待CONNACK   向IoTHub发送消息5   错误:时间:2018年12月21日星期五11:18:19文件:/home/test/azure-iot-sdk-c/iothub_client/src/iothubtransport_mqtt_common.c Func:InitializeConnection Line:2229 mqtt_client超时等待CONNACK   错误:时间:2018年12月21日星期五11:20:19文件:/home/test/azure-iot-sdk-c/iothub_client/src/iothubtransport_mqtt_common.c Func:InitializeConnection Line:2229 mqtt_client超时等待CONNACK   错误:时间:2018年12月21日星期五11:22:19文件:/home/test/azure-iot-sdk-c/iothub_client/src/iothubtransport_mqtt_common.c Func:InitializeConnection Line:2229 mqtt_client超时等待CONNACK   错误:时间:2018年12月21日星期五11:24:19文件:/home/test/azure-iot-sdk-c/iothub_client/src/iothubtransport_mqtt_common.c Func:InitializeConnection Line:2229 mqtt_client超时等待CONNACK   错误:时间:2018年12月21日星期五11:26:19文件:/home/test/azure-iot-sdk-c/iothub_client/src/iothubtransport_mqtt_common.c Func:InitializeConnection Line:2229 mqtt_client超时等待CONNACK

注意: 在以前的版本中,您说它已解决,但在这里对我来说不起作用。请向我解释问题出在哪里。

1 个答案:

答案 0 :(得分:0)

SDK函数的“ LL”版本是单线程的。将代码修改为休眠两分钟后,SDK无法为套接字提供服务,因此无法及时接收CONNACK数据包。服务套接字的函数调用为IoTHubDeviceClient_LL_DoWork。该函数应至少每100毫秒调用一次,最好比此速度更快。如果您只想每两分钟发送一条消息,则您有责任跟踪时间,并在距上一条消息两分钟后发送消息。您不能简单地使线程休眠两分钟。