【问题标题】:HiveMQ error when I run it: Could not bind to all interfaces and port 1883, because it is already in use运行 HiveMQ 时出现错误:无法绑定到所有接口和端口 1883,因为它已在使用中
【发布时间】:2014-08-26 20:46:58
【问题描述】:

我正在使用企业代理 HiveMQ 开发基于 MQTT 的应用程序。我按照这里的说明安装了它-http://www.hivemq.com/docs/hivemq/2.0.1/

当我使用 ./bin/run.sh 运行它时,服务器连接由于错误而立即关闭 - 无法绑定到所有接口和端口 1883,因为它已经在使用中。停止 HiveMQ

据我所知,没有其他人在使用此端口。即使我重新启动计算机并且没有其他任何运行时也会发生这种情况。我在 root 模式下运行。

为什么会出现这个错误?

【问题讨论】:

  • 您是否尝试过运行 lsof -iTCP:1883 来仔细检查端口上没有监听?
  • 原来这非常有用。我得到-mosquitto 539 mosquitto 3u IPv4 9748 0t0 TCP *:1883 (LISTEN)。这表明以前的 MQTT 代理,mosquitto 出于某种原因总是在后台运行。 netstat 没有显示这个问题。

标签: port mqtt hivemq


【解决方案1】:

要检查端口是否已经在运行,如果您碰巧运行 Linux / BSD / OSX,请在终端中键入以下内容:

netstat -an|grep 1883

如果您运行的是 Windows 系统,请键入以下内容:

netstat -an|find "1883"

运行该命令后,您应该会看到哪个应用程序正在使用端口 1883。

或者,您可以编辑 HiveMQ 安装的 conf 文件夹中的 configuration.properties 文件并设置 global.port 属性到您选择的端口。

【讨论】:

  • 使用netstat,结果是-tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN; tcp6 0 0 :::1883 :::* LISTEN; unix 3 [ ] STREAM CONNECTED 1883 /var/run/dbus/system_bus_socket
  • 将我的端口更改为 1884 可以正常工作。但这不是官方的 MQTT 端口。
  • 看来已经有一个应用程序在使用端口 1883。在这种情况下,使用像 1884 这样的非标准端口可以工作,或者您可以阻止其他应用程序使用端口 1883。
  • 发现问题。请参阅问题的评论。必须使用 lsof -iTCP:1883 显示 MQTT 代理 mosquitto 正在运行。
【解决方案2】:

根据这些结果,您是否安装了d-bus daemon?我对d-bus不太了解,但是你有没有试过禁用它或者修改配置,然后看看你是否可以在1883端口重启hivemq。

【讨论】:

    最近更新 更多