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
注意: 在以前的版本中,您说它已解决,但在这里对我来说不起作用。请向我解释问题出在哪里。
答案 0 :(得分:0)
SDK函数的“ LL”版本是单线程的。将代码修改为休眠两分钟后,SDK无法为套接字提供服务,因此无法及时接收CONNACK数据包。服务套接字的函数调用为IoTHubDeviceClient_LL_DoWork
。该函数应至少每100毫秒调用一次,最好比此速度更快。如果您只想每两分钟发送一条消息,则您有责任跟踪时间,并在距上一条消息两分钟后发送消息。您不能简单地使线程休眠两分钟。