繁体   English   中英

如何为 mosquitto_new c/c++ mqtt 使用用户名和密码

[英]how to use a username and password for mosquitto_new c/c++ mqtt

嗨,所以我正在使用 linux (ubuntu),我正在使用带有 libmosquitto mqtt 库的 c/c++。 有一个名为 mosquitto_new() 的 function,它采用客户端 ID、cleas_session 和一个 void object 指针作为 arguments。在我在网上看到的所有示例中,void object 指针参数已保留为 NULL,这意味着不需要用户名或密码. 我确实在网上看到,如果您想使用用户名和密码,那么您可以将无效指针 object 从 NULL 更改为指向您的用户名和密码的指针。

但我不明白它是如何工作的,因为如果你在代码中有你的用户名和密码,它有点违背了拥有密码的意义。

我从测试中知道,如果你只是使用终端来使用 mosquitto mqtt 代理,那么你会创建一个包含用户名和密码的文本文件,并将 .conf 文件更改为不允许匿名用户并启用用户名和密码文件。 但我不确定如何使用 mosquitto 库在 c/c++ 中执行此操作。

因此,总的来说,如果有人知道如何执行此操作,我将非常感谢您的帮助,我认为这与更改 mosquitto_new function 中的 NULL 有关,但我不确定。

附件是我在 atm 上工作的出版商的代码,如果有帮助的话。

#include <iostream>
#include <stdio.h>
#include </home/dave/mosquitto/include/mosquitto.h>

using namespace std;

int main(){
      int rc;
      char message[] = "Hello World testing";
      
      struct mosquitto * mosq;

      mosquitto_lib_init();
      

      mosq = mosquitto_new("publisher-test", true, NULL);

      rc = mosquitto_connect(mosq, "130.246.57.26", 1883, 60); // ip 130.246.57.26
      if(rc != 0){
            printf("Client could not connect to broker! Error Code: %d\n", rc);
            mosquitto_destroy(mosq);
            return -1;
      }
      printf("We are now connected to the broker!\n");

      mosquitto_publish(mosq, NULL, "test/1", sizeof(message), &message , 0, false);

      mosquitto_disconnect(mosq);
      mosquitto_destroy(mosq);

      mosquitto_lib_cleanup();
      return 0;
}

提前致谢,院长

文档的正确部分在这里讨论了mosquitto_username_pw_set ,它用于在调用mosquitto_connect mosq

例如

      struct mosquitto * mosq;
      mosquitto_lib_init();

      mosq = mosquitto_new("publisher-test", true, NULL);
      mosquitto_username_pw_set(mosq, "username", "password")

      rc = mosquitto_connect(mosq, "130.246.57.26", 1883, 60);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM