Liunx下用C语言实现MQTT的接收与发送(上)

        最近,笔者在倒腾MQTT相关的东西,但是不过基本上都是在mqttfx上玩的,因此呢,现在笔者需要在Liunx下实现MQTT数据的收发问题了。python实现挺方便的,后续可以重新补写一篇。本篇呢就分享一下用C语言实现的亲测可行的办法。

        笔者是在Jetson Nano下的Ubuntu系统进行测试。        


环境准备

安装paho c库:GitHub - eclipse/paho.mqtt.c at v1.3.0

下载git库到LIUNX本地后,进入到库目录下

cd paho.mqtt.c-1.3.0

对库进行编译操作

make

这时候可以发现,在paho.mqtt.c-1.3.0/build/output下可以找到很多.so的文件。

回到库目录下,对库进行安装操作

make install

库将被安装到/usr/local/lib中,同时会报些文件不存在的错,这些错可以忽略,笔者暂时未发现这些文件的用处和影响。


MQTT测试

Paho自带有示例程序,在paho.mqtt.c-1.3.0/src/samples下的。我们需要更改MQTTClient_subscribe .c文件和MQTTClient_publish.c文件中的宏定义部分

#define ADDRESS     "tcp://localhost:1883"
#define CLIENTID    "ExampleClientPub"
#define TOPIC       "MQTT Examples"
#define PAYLOAD     "Hello World!"

一般不会把本地作为MQTT服务器(MQTT broker),所以小白可以找找那些共享的MQTT服务器,例如:tcp://test.ranye-iot.net:1883

TOPIC就是要订阅的话题,PAYLOAD为默认要发送的字符

如果你的MQTT服务器不允许匿名访问,则还需要添加姓名和密码:

  char *username= "user"; //用户名
  char *password = "test"; //密码

并将用户名和密码写入连接选项中(在main函数下的):

    conn_opts.username = username; //将用户名写入连接选项中
    conn_opts.password = password; //将密码写入连接选项中

更改完成之后保存回到库目录下,再次make编译

make

进入paho.mqtt.c-1.3.0/build/output/samples,看到重新编译生成的MQTTClient_subscribe和MQTTClient_publish文件

先开启一下

 ./MQTTClient_subscribe

再开一个终端,开启一下发送端

./MQTTClient_publish

回到接收端,看看是不是有接收到内容啊。有收到内容就是成功啦,接下来就好好研究一下这两.c文件是怎么写的吧!


不过呢,本文仅仅是在库环境下运行的,咱们在项目实际使用中,肯定是要从库环境下分类的,将库环境分类开来,后续笔者会再写一篇来讲述。

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星羽空间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值