Paho-MQTT C 库 API 接口
接口类型 | 头文件 | 备注 |
---|---|---|
Paho MQTT C Client Library | MQTTClient.h | 非线程安全 |
Paho Asynchronous MQTT C Client Library | MQTTAsync.h | 线程安全 |
数据结构
typedef void* MQTTClient;
typedef void* MQTTAsync;
MQTTClient 库接口
MQTTClient_connect() : MQTTClient.h
int MQTTClient_connect(MQTTClient handle,
MQTTClient_connectOptions *options
)
此函数尝试使用指定的选项将以前创建的客户端(调用 MQTTClient_create()
函数)连接到 MQTT 服务器。如果要启用异步消息和状态通知,调用该函数之前必须先调用 MQTTClient_setCallbacks()
函数。
MQTTClient_connect5() : MQTTClient.h
MQTTResponse MQTTClient_connect5(MQTTClient handle,
MQTTClient_connectOptions *options,
MQTTProperties *connectProperties,
MQTTProperties *willProperties
)
此函数尝试使用 MQTT 版本 5.0 和指定的选项将以前创建的客户端(调用 MQTTClient_create()
函数)连接到 MQTT 服务器。如果要启用异步消息和状态通知,调用该函数之前必须先调用 MQTTClient_setCallbacks()
函数。
MQTTClient_create() : MQTTClient.h
int MQTTClient_create(MQTTClient *handle,
const char *serverURI,
const char *clientId,
int persistence_type,
void * persistence_context
)
此函数创建一个 MQTT 客户端,以便连接到指定的服务器并使用指定的持久性存储(参考 MQTTClient_persistence
函数)。另外,与创建函数对应的是销毁函数 MQTTClient_destroy()
。
MQTTClient_createWithOptions() : MQTTClient.h
int MQTTClient_createWithOptions(MQTTClient *handle,
const char *serverURI,
const char *clientId,
int persistence_type,
void * persistence_context,
MQTTClient_createOptions *options
)
此函数为 MQTTClient_create()
函数的带选项版本,用于创建一个 MQTT 客户端,以便连接到指定的服务器并使用指定的持久性存储(参考 MQTTClient_persistence
函数)。另外,与创建函数对应的是销毁函数 MQTTClient_destroy()
。
MQTTClient_destroy() : MQTTClient.h
void MQTTClient_destroy(MQTTClient *handle)
此函数用于释放分配给 MQTT 客户端的内存(调用 MQTTClient_create()
函数)。当不再需要客户端时,应该调用它。
MQTTClient_disconnect() : MQTTClient.h
int MQTTClient_disconnect(MQTTClient handle, int timeout)
此函数尝试断开客户端与 MQTT 服务器的连接。为了让客户端有时间完成对调用此函数时正在传递的消息的处理,需要指定一个超时期限。当超时期限过期时,即使仍有未完成的消息确认,客户端也会断开连接。下一次客户端连接到同一服务器时,任何未完成的 QoS 1 或 2 消息将根据前一个连接和新连接的清理设置重试(参考 MQTTClient_connectOptions.cleansession
和 MQTTClient_connect()
)。
MQTTClient_disconnect5() : MQTTClient.h
int MQTTClient_disconnect5(MQTTClient handle,
int timeout,
enum MQTTReasonCodes reason,
MQTTProperties * props
)
此函数为 MQTTClient_disconnect()
函数的 MQTT 5.0 版本,用于尝试断开客户端与 MQTT 服务器的连接。
MQTTClient_free() : MQTTClient.h
void MQTTClient_free(void *ptr)
此函数释放 MQTT C Client 库分配的内存,特别是主题名称。当 client 库和应用程序使用不同版本的 C 编译器编译时,在 Windows 上需要这样做。因此,在释放任何 MQTT C Client 分配的内存时,始终使用此函数是一个很好的策略。
MQTTClient_freeMessage() : MQTTClient.h
void MQTTClient_freeMessage(MQTTClient_message ** msg)
此函数释放分配给 MQTT 消息的内存,包括分配给消息有效负载的附加内存。当完全处理消息时,客户端应用程序调用此函数。重要提示:此函数不释放分配给消息主题字符串的内存。客户端应用程序负责使用 MQTTClient_free()
库函数释放此内存。
MQTTClient_getPendingDeliveryTokens() : MQTTClient.h
int MQTTClient_getPendingDeliveryTokens(MQTTClient handle,
MQTTClient_deliveryToken **tokens
)
此函数设置一个指针,该指针指向当前正在传递(等待完成)的消息的传递令牌数组。
重要提示:在这个函数中,用于保存令牌数组的内存是 malloc()
分配的。当不再需要此内存时,客户端应用程序要负责释放此内存。
MQTTClient_getVersionInfo() : MQTTClient.h
MQTTClient_nameValue* MQTTClient_getVersionInfo(void)
此函数返回 MQTT C Client 库的版本信息,但不会返回任何跟踪信息。
MQTTClient_global_init() : MQTTClient.h
void MQTTClient_global_init(MQTTClient_init_options *inits)
MQTT 库的全局初始化,在程序开始时调用一次以设置全局行为。例如 do_openssl_init
—— 如果 mqtt 库应该初始化 OpenSSL,或者在使用库之前依赖调用者进行初始化。
MQTTClient_isConnected() : MQTTClient.h
int MQTTClient_isConnected(MQTTClient handle)
此函数允许客户端应用程序测试某个 client 与 MQTT 服务器连接情况,已连接返回 true,否则返回 false。
MQTTClient_publish() : MQTTClient.h
int MQTTClient_publish(MQTTClient handle,
const char * topicName,
int payloadlen,
const void * payload,
int qos,
int retained,
MQTTClient_deliveryToken *dt
)
此函数试图将消息发布到给定主题(另请参见 MQTTClient_publishMessage
函数)。当此函数成功返回时,将发出 MQTTClient_deliveryToken
。如果客户端应用程序需要测试 QoS1 和 QoS2 消息的成功传递,可以异步或同步地完成(参考