MQTT Client library for C (MQTT客户端C语言库-paho)

7 篇文章 5 订阅

原文:http://www.eclipse.org/paho/files/mqttdoc/MQTTClient/html/index.html

  最近在使用Paho的MQTT客户端,由于英语看着有点慢,因此将其翻译为中文,与大家共享。由于英语水平有限,如有翻译不对之处,请帮忙指出。

MQTT客户端C语言库

  MQTT客户端的C语言库.© Copyright IBM Corp. 2009, 2017.
  这些页面描述了早期的通常被认为更容易使用同步API.(同步API)一些调用将会阻塞。对于新的完全异步的无阻塞API,尤其适合在视窗化的环境中使用(可参见MQTT C Client Asynchronous API Documentation)。 MQTTClient API不是线程安全的,而MQTTAsync API是线程安全的。
  MQTT客户端程序连接到具有MQTT功能的服务器。典型的客户端负责从遥测设备收集信息并将信息发布到服务器。它还可以订阅主题, 接收消息, 并使用这些信息来控制遥测设备。
  MQTT客户实现了已发布的MQTT v3协议。您可以使用您选择的编程语言和平台编写自己的MQTT协议API。这可能会很费时且容易出错。使用此库只需要很少的代码就可以写出功能齐全的mqtt客户端应用程序。这里提供的信息记录了MQTT客户端C语言库提供的API。

使用客户端

使用客户端库的应用程序通常使用类似的结构:
  1.创建一个客户端对象;
  2.设置连接MQTT服务器的选项;
  3.如果多线程(异步模式)操作被使用则设置回调函数(详见 Asynchronous vs synchronous client applications);
  4.订阅客户端需要接收的任意话题;
  5.重复以下操作直到结束:
    a.发布客户端需要的任意信息;
    b.处理所有接收到的信息;
  6.断开客户端连接;
  7.释放客户端使用的所有内存。

  下面展示了一些简单的示例:

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是使用MQTTclient来连接MQTT服务器的C语言代码示例: ```c #include <stdio.h> #include <string.h> #include <MQTTClient.h> #define ADDRESS "tcp://mqtt.eclipse.org:1883" // MQTT服务器地址 #define CLIENTID "ExampleClientSub" // 客户ID #define TOPIC "test/topic" // 需要订阅的主题 #define QOS 1 // 服务质量等级 #define TIMEOUT 10000L // 超时时间 volatile MQTTClient_deliveryToken deliveredtoken; void delivered(void *context, MQTTClient_deliveryToken dt) { printf("Message with token value %d delivery confirmed\n", dt); deliveredtoken = dt; } int msgarrvd(void *context, char *topicName, int topicLen, MQTTClient_message *message) { printf("Message arrived\n"); printf(" topic: %s\n", topicName); printf(" message: %.*s\n", message->payloadlen, (char*)message->payload); MQTTClient_freeMessage(&message); MQTTClient_free(topicName); return 1; } void connlost(void *context, char *cause) { printf("\nConnection lost\n"); printf(" cause: %s\n", cause); } int main(int argc, char* argv[]) { MQTTClient client; MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer; int rc; MQTTClient_create(&client, ADDRESS, CLIENTID, MQTTCLIENT_PERSISTENCE_NONE, NULL); conn_opts.keepAliveInterval = 20; conn_opts.cleansession = 1; MQTTClient_setCallbacks(client, NULL, connlost, msgarrvd, delivered); if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS) { printf("Failed to connect, return code %d\n", rc); return -1; } printf("Subscribing to topic %s\nfor client %s using QoS%d\n\n", TOPIC, CLIENTID, QOS); MQTTClient_subscribe(client, TOPIC, QOS); printf("Press any key to exit\n"); getchar(); MQTTClient_disconnect(client, 10000); MQTTClient_destroy(&client); return rc; } ``` 在这个示例中,我们使用了MQTTClient来创建一个MQTT客户并连接到指定的MQTT服务器。我们需要指定MQTT服务器地址、客户ID、需要订阅的主题、服务质量等级和超时时间等参数。在连接MQTT服务器之后,我们可以订阅指定的主题,并在消息到达时处理它们。最后,我们可以使用MQTTClient_disconnect函数关闭连接并销毁客户
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值