Mosquitto:以仅本地模式启动

Fla*_*asH 8 networking mqtt mosquitto iot

我有一个应该是主机的虚拟机,它可以接收和发送数据。第一张图片是我在我的主机上遇到的错误(我试图从中发送数据)。第二张图是我虚拟机上的mosquitto登录。此外,我正在使用默认配置,据我所知,这不会导致这些问题,至少从我从其他示例中看到的情况来看。我对所有这些工作原理知之甚少,因此感谢您的帮助。

我在主机上尝试过的:

  1. 禁用 Windows Defender
  2. 为“mosquitto.exe”添加防火墙规则
  3. 在 Linux 机器上安装 mosquitto

第一个错误

第二个错误

网络统计信息

小智 19

默认情况下,Mosquitto 代理仅接受来自本地计算机(托管代理的服务器)上的客户端的连接。因此,您的 Mosquitto 实例需要使用自定义配置,以便接受来自远程客户端的连接。

  1. 在 Windows 计算机上,以管理员身份运行文本编辑器并粘贴以下文本:
listener 1883
allow_anonymous true
Run Code Online (Sandbox Code Playgroud)
  1. 这将在端口 1883 上创建一个侦听器并允许匿名连接。默认情况下,连接数是无限的。使用扩展名为“.conf”的文件名(例如“your_conf_file.conf”)将文件保存到“C:\Program Files\Mosquitto”。

  2. 打开终端窗口并导航到 mosquitto 目录。运行以下命令:

mosquitto -v -c your_conf_file.conf
Run Code Online (Sandbox Code Playgroud)

在哪里

-c :指定代理配置文件。

-v :详细模式 - 启用所有日志记录类型。这会覆盖配置文件中给出的任何日志记录选项。


har*_*llb 15

从 Mosquitto 2.0.0 版(您正在运行 v2.0.2)开始,默认配置将仅绑定到localhost更安全的默认状态。

如果您希望能够从其他机器访问代理,您将需要显式编辑配置文件以添加一个listener绑定到外部 IP 地址(或 0.0.0.0)的新文件或bind为默认侦听器添加一个条目。

默认情况下,它也只允许来自 localhost 的匿名连接(没有用户名/密码),以允许来自远程添加的匿名:

allow_anonymous true 
Run Code Online (Sandbox Code Playgroud)

可以在此处的 2.0 发行说明中找到更多详细信息

  • 实际上只是将“bind_interface device”或“bind_address ip_address”添加到配置文件中。 (2认同)

小智 5

你必须跑

mosquitto -c mosquitto.conf
Run Code Online (Sandbox Code Playgroud)

mosquitto.conf 存在于与执行文件相同的文件夹中(C:\Program Files\mosquitto 等),必须包含以下行。

listener 1883 ip_address_of_the_machine(192.168.1.1 etc.)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你!到处都在谈论在 mosquitto.conf 中定义侦听器,但这是我第一次遇到需要将文件指定为参数的情况。 (3认同)