MQTT学习 -- 搭建MQTT服务器及测试

MQTT再学习 -- 搭建MQTT服务器及测试

解压压缩包:
sudo tar xvf jdk-8u25-linux-x64.tar.gz
设置jdk环境变量:

  
  
  1. # gedit /etc/profile
  2. 在最后添加下面代码:
  3. export JAVA_HOME=/usr/local/java/jdk1 .8 .0_144
  4. export JRE_HOME= J A V A H O M E / j r e &lt; / d i v &gt; &lt; / d i v &gt; &lt; / l i &gt; &lt; l i &gt; &lt; d i v c l a s s = &quot; h l j s − l n − n u m b e r s &quot; &gt; &lt; d i v c l a s s = &quot; h l j s − l n − l i n e h l j s − l n − n &quot; d a t a − l i n e − n u m b e r = &quot; 6 &quot; &gt; &lt; / d i v &gt; &lt; / d i v &gt; &lt; d i v c l a s s = &quot; h l j s − l n − c o d e &quot; &gt; &lt; d i v c l a s s = &quot; h l j s − l n − l i n e &quot; &gt; &lt; s p a n c l a s s = &quot; h l j s − k e y w o r d &quot; &gt; e x p o r t &lt; / s p a n &gt; C L A S S P A T H = . : {JAVA_HOME}/jre &lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;hljs-ln-numbers&quot;&gt;&lt;div class=&quot;hljs-ln-line hljs-ln-n&quot; data-line-number=&quot;6&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;hljs-ln-code&quot;&gt;&lt;div class=&quot;hljs-ln-line&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;export&lt;/span&gt; CLASSPATH=.: JAVAHOME/jre</div></div></li><li><divclass="hljslnnumbers"><divclass="hljslnlinehljslnn"datalinenumber="6"></div></div><divclass="hljslncode"><divclass="hljslnline"><spanclass="hljskeyword">export</span>CLASSPATH=.:{JAVA_HOME}/lib: J R E H O M E / l i b &lt; / d i v &gt; &lt; / d i v &gt; &lt; / l i &gt; &lt; l i &gt; &lt; d i v c l a s s = &quot; h l j s − l n − n u m b e r s &quot; &gt; &lt; d i v c l a s s = &quot; h l j s − l n − l i n e h l j s − l n − n &quot; d a t a − l i n e − n u m b e r = &quot; 7 &quot; &gt; &lt; / d i v &gt; &lt; / d i v &gt; &lt; d i v c l a s s = &quot; h l j s − l n − c o d e &quot; &gt; &lt; d i v c l a s s = &quot; h l j s − l n − l i n e &quot; &gt; &lt; s p a n c l a s s = &quot; h l j s − k e y w o r d &quot; &gt; e x p o r t &lt; / s p a n &gt; P A T H = {JRE_HOME}/lib &lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;hljs-ln-numbers&quot;&gt;&lt;div class=&quot;hljs-ln-line hljs-ln-n&quot; data-line-number=&quot;7&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;hljs-ln-code&quot;&gt;&lt;div class=&quot;hljs-ln-line&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;export&lt;/span&gt; PATH= JREHOME/lib</div></div></li><li><divclass="hljslnnumbers"><divclass="hljslnlinehljslnn"datalinenumber="7"></div></div><divclass="hljslncode"><divclass="hljslnline"><spanclass="hljskeyword">export</span>PATH={JAVA_HOME}/bin: KaTeX parse error: Expected 'EOF', got '#' at position 809: …ss="hljs-meta">#̲ java -version<… XDG_CONFIG_HOME / mosquitto_sub或$ HOME / .config / mosquitto_sub的配置文件中,每行一对 - 吸附值。配置文件中的值将被用作默认值,并且可以通过使用命令行来覆盖。这个例外是-t和-T,如果在配置文件中给出,将不会被覆盖。还要注意,目前一些选项不能被否定,例如-S。具有#作为第一个字符的配置文件行将被视为注释,不会进一步处理。
  5. -a
  6. 将输出连接绑定到本地IP地址/主机名。如果需要将网络通信限制在特定接口上,请使用此参数。
  7. -c,–disable-clean-session
  8. 禁用“'clean session”标志。这意味着客户端的所有订阅将在断开连接后维护,以及到达的后续QoS 1和QoS 2消息。当客户端重新连接时,它将接收所有排队的消息。如果使用此选项,建议使用 -id 手动设置客户机ID
  9. –cafile
  10. 定义包含受信任的PEM编码的CA证书的文件的路径。用于启用SSL通信。另请参见–capath
  11. –capath
  12. 定义包含受信任的PEM编码的CA证书的目录的路径。用于启用SSL通信。
  13. 为了–capath正常工作,证书文件必须具有“.crt”作为文件结束,您必须在每次添加/删除证书时运行“c_rehash <path to capath>”。另请参见–cafile
  14. –cert
  15. 如果服务器需要,定义包含此客户端的PEM编码证书的文件的路径。另请参阅–key。
  16. –ciphers
  17. 在客户端支持的TLS密码的openssl兼容列表。有关详细信息,请参阅密码(1)。
  18. -C
  19. 在接收到给定的消息数后立即断开并退出程序。例如,在需要单个状态值的shell脚本中这可能很有用。
  20. 结合-R来仅打印第一组新消息(即,没有设置保留标志),或者使用 -T 来过滤哪些主题被处理。
  21. -d,–debug
  22. 启用调试消息。
  23. - help
  24. 显示使用信息。
  25. -h,–host
  26. 指定要连接的主机。默认为localhost。
  27. -i,–id
  28. 该客户端使用的id。如果没有给出,默认为mosquitto_sub_附加客户端的进程ID。不能与-id-prefix参数同时使用。
  29. -I,-id-prefix
  30. 通过追加客户端的进程标识来提供客户端ID的前缀。这在代理使用clientid_prefixes选项时很有用。不能与-id参数同时使用。
  31. –insecure
  32. 使用基于证书的加密时,此选项将禁用对服务器证书中服务器主机名的验证。这在测试初始服务器配置时可能很有用,但是通过DNS欺骗可以让恶意第三方冒充您的服务器。仅在测试中使用此选项。如果您需要在生产环境中使用此选项,则您的设置会出现故障,并且无需使用加密。
  33. -k,–keepalive
  34. 发送PING命令到经纪人以通知它之前的秒数仍然是连接和运行的。默认为60秒。
  35. - key
  36. 如果服务器需要,定义包含此客户端的PEM编码私钥的文件的路径。另请参见–cert。
  37. -N
  38. 打印时,不要在有效负载上附加行尾符号。这允许将来自多个消息的有效载荷数据直接传输到另一个应用程序。只有在不使用-v的时候才真正有意义。
  39. -p,–port
  40. 连接到指定的端口而不是默认端口1883。
  41. -P, - pw
  42. 提供用于与经纪人进行认证的密码。在不指定用户名的情况下使用此参数是无效的。这需要一个支持MQTT v3.1的代理。另请参阅–username选项。
  43. - proxy
  44. 指定要连接的SOCKS5代理。支持“无”和“用户名”身份验证类型。 socks-url必须是形式socks5h:// [username [:password] @] host [:port]。协议前缀socks5h表示主机名由代理解析。符号%25,%3A和%40分别被URL解码为%,…和@,如果存在于用户名或密码中。
  45. 如果没有给出用户名,则不会尝试认证。如果没有给出端口,则使用默认值为1080。
  46. 根据需求,将来可能会有更多SOCKS版本,并且将使用不同的协议前缀,如卷曲(1)所述。
  47. –psk
  48. 提供与代理使用的十六进制(无前导0x)预共享密钥,以使用TLS-PSK加密支持。还必须提供–psk身份以启用TLS-PSK。
  49. –psk身份
  50. 使用TLS-PSK支持的客户端身份。这可以用来代替用户名

《3》发布内容

再打开一个终端输入:
mosquitto_pub -t test -m “hello world” 

  
  
  1. 此时第二个终端多了一行信息
  2. # mosquitto_sub -v -t test
  3. hello world
mosquitto_pub 选项介绍

   
   
  1. 下面的选项可以在命令行中给出,但是也可以放置在位于$ XDG_CONFIG_HOME / mosquitto_pub或$ HOME / .config / mosquitto_sub的配置文件中,每行一对 - 吸附值。配置文件中的值将被用作默认值,并且可以通过使用命令行来覆盖。这个例外是消息类型选项,其中只能指定一个。还要注意,目前一些选项不能被否定,例如-S。具有#作为第一个字符的配置文件行将被视为注释,不会进一步处理。
  2. -a
  3. 将输出连接绑定到本地IP地址/主机名。如果需要将网络通信限制在特定接口上,请使用此参数。
  4. –cafile
  5. 定义包含受信任的PEM编码的CA证书的文件的路径。用于启用SSL通信。另请参见–capath
  6. –capath
  7. 定义包含受信任的PEM编码的CA证书的目录的路径。用于启用SSL通信。
  8. 为了–capath正常工作,证书文件必须具有“.crt”作为文件结束,您必须在每次添加/删除证书时运行“c_rehash <path to capath>”。另请参见–cafile
  9. –cert
  10. 如果服务器需要,定义包含此客户端的PEM编码证书的文件的路径。另请参阅–key。
  11. –ciphers
  12. 在客户端支持的TLS密码的openssl兼容列表。有关详细信息,请参阅密码(1)。
  13. -d,–debug
  14. 启用调试消息。
  15. -f,–file
  16. 发送文件的内容作为消息。
  17. - help
  18. 显示使用信息。
  19. -h,–host
  20. 指定要连接的主机。默认为localhost。
  21. -i,–id
  22. 该客户端使用的id。如果没有给出,默认为mosquitto_pub_附加客户端的进程ID。不能与-id-prefix参数同时使用。
  23. -I,-id-prefix
  24. 通过追加客户端的进程标识来提供客户端ID的前缀。这在代理使用clientid_prefixes选项时很有用。不能与-id参数同时使用。
  25. –insecure
  26. 使用基于证书的加密时,此选项将禁用对服务器证书中服务器主机名的验证。这在测试初始服务器配置时可能很有用,但是通过DNS欺骗可以让恶意第三方冒充您的服务器。仅在测试中使用此选项。如果您需要在生产环境中使用此选项,则您的设置会出现故障,并且无需使用加密。
  27. -k,–keepalive
  28. 发送PING命令到经纪人以通知它之前的秒数仍然是连接和运行的。默认为60秒。
  29. -key
  30. 如果服务器需要,定义包含此客户端的PEM编码私钥的文件的路径。另请参见–cert。
  31. -l,–stdin-line
  32. 发送从stdin读取的消息,将单独的行分成单独的消息。请注意,空行不会被发送。
  33. -m, - 消息
  34. 从命令行发送一条消息。
  35. -n, - 消息
  36. 发送null(零长度)消息。
  37. -p,–port
  38. 连接到指定的端口而不是默认端口1883。
  39. -P, - pw
  40. 提供用于与经纪人进行认证的密码。在不指定用户名的情况下使用此参数是无效的。这需要一个支持MQTT v3.1的代理。另请参阅–username选项。
  41. -proxy
  42. 指定要连接的SOCKS5代理。支持“无”和“用户名”身份验证类型。 socks-url必须是形式socks5h:// [username [:password] @] host [:port]。协议前缀socks5h表示主机名由代理解析。符号%25,%3A和%40分别被URL解码为%,…和@,如果存在于用户名或密码中。
  43. 如果没有给出用户名,则不会尝试认证。如果没有给出端口,则使用默认值为1080。
  44. 根据需求,将来可能会有更多SOCKS版本,并且将使用不同的协议前缀,如卷曲(1)所述。
  45. –psk
  46. 提供与代理使用的十六进制(无前导0x)预共享密钥,以使用TLS-PSK加密支持。还必须提供–psk身份以启用TLS-PSK。
  47. –psk身份
  48. 使用TLS-PSK支持的客户端身份。如果代理配置为这样做,则可以使用这可以替代用户名。
  49. -q,–qos
  50. 指定消息的使用质量,从0,1和2.默认为0。
  51. - quiet
  52. 如果给出此参数,则不会打印运行时错误。这排除了在无效用户输入的情况下给出的任何错误消息(例如使用 - 没有端口的端口)。
  53. -r, - 保存
  54. 如果保留被赋予,则该消息将被保留为经纪人的“最后已知的良好”值。有关更多信息,请参阅mqtt(7)。
  55. -s,–stdin-file
  56. 发送从stdin读取的消息,将整个内容作为单个消息发送。
  57. -S
  58. 使用SRV查找来确定要连接的主机。当我们执行查询_mqtt._tcp

不过如果直接将第一个终端关闭再打开 mosquitto 会出现一个问题
Error: Address already in use
解决方法:重启…   别的方法暂时不知道呢

(4)取消匿名登录






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MQTTClient-C是一个基于C语言开发的MQTT客户端库。MQTT是一种轻量级的消息传输协议,被广泛应用于物联网等场景中。MQTTClient-C可以方便地实现MQTT客户端的开发,提供了一套简洁易用的接口。 首先,使用MQTTClient-C可以快速实现MQTT客户端的开发,无需从头开始设计和实现MQTT协议的通讯细节。库中封装了MQTT协议的各种细节,包括连接、订阅、发布等操作,开发者只需调用相应的接口即可完成。 其次,MQTTClient-C提供了多种不同层次的应用编程接口,可满足不同开发需求。开发者可以根据自身需求选择合适的API进行开发,使得代码更加简洁易读。 此外,MQTTClient-C还提供了丰富的可配置选项,可以根据实际需求灵活配置客户端参数。比如可以设置重连间隔、心跳频率、最大重试次数等,以适应各种网络环境和设备限制。 最后,MQTTClient-C具备良好的可移植性和跨平台性。它可以在不同的操作系统和硬件平台上运行,包括嵌入式设备和服务器等。这使得开发者能够更加灵活地选择合适的平台进行开发和部署。 综上所述,应用MQTTClient-C可以方便地实现MQTT客户端的开发,并且具备灵活的可配置性和跨平台性,是一种非常实用的工具。无论是在物联网领域还是其他场景中,MQTTClient-C都可以帮助开发者快速搭建稳定可靠的MQTT系统。 ### 回答2: MQTTClient-C是一个用于C语言的MQTT客户端库,用于与MQTT代理服务器进行通信。该库提供了一组API,使开发者能够轻松地建立与MQTT服务器的连接,发布和订阅消息。 使用MQTTClient-C,可以实现以下功能: 1. 建立与MQTT服务器的连接:使用MQTTClient-C,可以通过提供MQTT服务器的地址和端口号来建立与服务器的连接。 2. 发布消息:通过调用MQTTClient-C提供的API,可以向MQTT服务器发布消息。可以指定消息的主题,质量、消息内容等参数。 3. 订阅消息:使用MQTTClient-C,可以通过提供订阅的主题来订阅特定的消息。可以指定消息的质量等级。 4. 处理消息回调:MQTTClient-C允许开发者为接收到的消息注册回调函数。当接收到订阅的消息时,会调用注册的回调函数进行处理。 5. 支持SSL连接:MQTTClient-C支持通过SSL加密来建立与MQTT服务器的安全连接。 6. 消息持久化:MQTTClient-C支持消息持久化,即当未成功发送的消息被储存在本地,直到成功发送为止。 7. 支持遗嘱消息:MQTTClient-C支持发布遗嘱消息,即当客户端异常断开连接时,会自动发布指定的遗嘱消息。 总结来说,MQTTClient-C是一个功能强大的MQTT客户端库,适用于C语言开发者。它提供了一组API,使开发者能够轻松建立与MQTT服务器的连接,发布和订阅消息,并支持SSL连接和消息持久化等功能,有助于开发者构建可靠和安全的MQTT应用程序。 ### 回答3: MQTTClient-C 是一种用于在C语言环境下进行MQTT通信的开源客户端库。它基于MQTT协议实现了与MQTT代理服务器进行数据交互的功能。 MQTTClient-C 提供了一套简单易用的API,使开发人员能够快速地在C语言项目中实现MQTT通信功能。使用MQTTClient-C,我们可以轻松地订阅主题、发布消息以及处理订阅消息的回调。 MQTTClient-C 的特点包括: 1. 轻量级:MQTTClient-C 代码库非常小巧,可以轻松地嵌入到各种资源有限的嵌入式系统中,适用于各种物联网设备。 2. 跨平台:MQTTClient-C 支持各种主流操作系统,如Windows、Linux、FreeRTOS等,可以在不同平台上无缝地进行移植和集成。 3. 稳定可靠:MQTTClient-C 实现了MQTT 3.1.1版本的协议,支持QoS级别0、1和2,可以确保消息的可靠传输及交付。 4. 灵活可扩展:MQTTClient-C 提供了多样化的配置选项,可以根据需要进行灵活的参数设置,从而满足不同场景的需求。 使用MQTTClient-C,我们可以快速地实现物联网设备与服务器之间的即时通信和数据交换。例如,我们可以将传感器数据通过MQTTClient-C发布到MQTT代理服务器上,并通过订阅机制实现实时数据的传输和处理。同时,我们也可以通过MQTTClient-C订阅特定主题,实时接收服务器发送的指令或控制信息。 总而言之,MQTTClient-C 是一个功能强大且易于使用的C语言MQTT客户端库,使我们能够快速地开发出高效可靠的物联网应用程序。无论是开发嵌入式设备还是服务器端应用,MQTTClient-C 都是一个非常有价值的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值