我有一台虚拟机,应该是主机,可以接收和发送数据。第一张图片显示了我在主机上(从中我试图发送数据)得到的错误。第二张图片是我的虚拟机上的mosquitto日志。此外,我正在使用默认配置,据我所知,这不会引起问题,至少从其他示例中我看到的情况来看是这样的。我对所有这些工作原理有非常少的了解,因此任何帮助都将不胜感激。
我在主机上尝试了以下方法:
- 禁用Windows Defender
- 为“mosquitto.exe”添加防火墙规则
- 在Linux机器上安装mosquitto
我有一台虚拟机,应该是主机,可以接收和发送数据。第一张图片显示了我在主机上(从中我试图发送数据)得到的错误。第二张图片是我的虚拟机上的mosquitto日志。此外,我正在使用默认配置,据我所知,这不会引起问题,至少从其他示例中我看到的情况来看是这样的。我对所有这些工作原理有非常少的了解,因此任何帮助都将不胜感激。
我在主机上尝试了以下方法:
从Mosquitto 2.0.0版本开始(您正在运行v2.0.2),默认配置将只绑定到localhost
,以更安全的方式进行默认姿态移动。
如果您想要从其他计算机访问代理,则需要显式编辑配置文件,以添加绑定到外部IP地址(或0.0.0.0)的新listener
或为默认监听器添加bind
条目。
默认情况下,它还仅允许来自localhost的匿名连接(无需用户名/密码)。 若要允许来自远程的匿名连接,请添加:
allow_anonymous true
listener 1883
更多细节可以在2.0版本发布说明这里找到。
bind_interface device
或 bind_address ip_address
即可。 - hardillb/usr/local/etc
下(正如您发布到问题中的日志输出中所描述的)。 - hardillb你必须跟着跑
mosquitto -c mosquitto.conf
必须在与执行文件相同的文件夹(例如:C:\Program Files\mosquitto)中存在 mosquitto.conf 文件,并且该文件必须包含以下行。
listener 1883 ip_address_of_the_machine(192.168.1.1 etc.)
默认情况下,Mosquitto代理仅接受来自本地机器(托管代理的服务器)的客户端连接。 因此,需要使用自定义配置来接受来自远程客户端的连接。
listener 1883
allow_anonymous true
这将在端口1883上创建一个监听器并允许匿名连接。默认情况下,连接数是无限的。将文件保存到"C:\Program Files\Mosquitto",使用带有".conf"扩展名的文件名,例如"your_conf_file.conf"。
打开终端窗口并导航到mosquitto目录。运行以下命令:
mosquitto -v -c your_conf_file.conf
where
-c:指定经纪人配置文件。
-v:详细模式 - 启用所有日志记录类型。 这将覆盖在配置文件中给出的任何日志选项。
bind_address ip_address
,还需要将allow_anonymous true
设置为真,才能使设备成功连接到MQTT。当然,更好的选择是在每个设备上设置用户和密码,但在最小配置中,一切正常工作之后才会进行下一步操作。对于在Mac上使用homebrew的mosquitto的用户。
将这两行添加到/opt/homebrew/Cellar/mosquitto/2.0.15/etc/mosquitto/mosquitto.conf
文件中,可以解决我的问题。
allow_anonymous true
listener 1883
mosquitto -c /mosquitto-no-auth.conf
我在运行生成于docker-compose的容器时遇到了同样的问题。 在docker-compose.yml文件中,可以通过以下方式解决:
command: mosquitto -c /mosquitto-no-auth.conf
etc/mosquitto
的mosquitto代理配置文件,我成功解决了通信问题。
然后,我使用nano编辑器打开文件,并通过命令进行编辑。sudo nano mosquitto.conf
allow_anonymous true
listener 1883