Windows系统下 MQTT 代理服务器 Mosquitto 安装配置及简单使用

该文章已生成可运行项目,

Mosquitto 安装包下载链接:下载 |日蚀莫斯基托https://mosquitto.org/download/1.创建账户和密码

以管理员身份运行命令提示符

点击「开始」菜单,搜索 cmd。
右键点击「命令提示符」,选择 “以管理员身份运行”。
再次执行你的命令

cd "C:\Program Files\mosquitto"
mosquitto_passwd.exe -c pwfile.example admin

注意:-c 选项会覆盖已有密码文件。如果是首次创建可以使用 -c,后续添加用户请去掉 -c

提示连续两次输入密码、创建成功。命令解释: -c 创建一个用户、pwfile.example 是将用户创建到 pwfile.example 文件中、admin 是用户名

2. 修改mosquitto.conf配置文件:

listener 1883 0.0.0.0
allow_anonymous true  # 如果你允许匿名连接(测试时用,生产环境建议用用户名/密码)
  • listener 1883 0.0.0.0:让代理监听所有IP(包括192.168.1.2),端口默认1883。
  • 如果你想指定只监听无线IP,可以改成你自己代理服务器的 ip 例如 listener 1883 192.168.1.2,但推荐用0.0.0.0更灵活

为了通讯安全可在配置文件中指定密码文件所在路径

#listener 1883 0.0.0.0
#allow_anonymous true  # 如果你允许匿名连接(测试时用,生产环境建议用用户名/密码)
listener 1883 0.0.0.0
password_file C:\Program Files\mosquitto\pwfile.example
# 注释掉或删除 allow_anonymous true
# allow_anonymous false  # 明确禁止匿名(可选,但推荐)

3.启动 Mosquitto Broker,在任务管理器,下面的服务栏中找到 Mosquitto的服务,右击启动这项服务

下面分别提供一下发布者和订阅者的python 程序

发布者

import json
import time
from paho.mqtt import client


def connect(client, userdata, flags, rc):
    if rc == 0:
        print('successful')
    else:
        print('fail')

device_id = 'k003'
will_topic = f'topic/test'
will_message = json.dumps({'MessageName':'DeviceLossMsg'})
connect_message = json.dumps({'MessageName':'DeviceConnectMsg'})
disconnet_message = json.dumps({'MessageName': 'DeviceDisConnectMsg'})

c1 = client.Client(device_id,True)
c1.on_connect = connect
c1.will_set(topic=will_topic,payload=will_message,retain=True)
c1.connect('192.168.1.2',1883)
c1.username_pw_set(username='admin',password='123456')
i = 1
c1.loop_start()
while 1:
    c1.publish(topic=will_topic,payload=connect_message,retain=True)
    print('success')
    time.sleep(2)
    c1.publish(topic=will_topic,payload=disconnet_message,retain=True)
    time.sleep(2)

订阅者

import json
from paho.mqtt import client as mqtt_client

# 配置
broker = '192.168.1.2'
port = 1883
topic = 'topic/test'
client_id = 'subscriber_client'
username = 'admin'
password = '123456'

def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("✅ 成功连接到 MQTT Broker!")
        client.subscribe(topic)
        print(f"📡 正在订阅主题: {topic}")
    else:
        print(f"❌ 连接失败,返回码: {rc}")

def on_message(client, userdata, msg):
    try:
        payload = msg.payload.decode('utf-8')
        data = json.loads(payload)
        message_name = data.get('MessageName', 'Unknown')
        print(f"📥 收到消息 - 主题: {msg.topic} | 内容: {message_name} | 原始载荷: {payload}")
    except Exception as e:
        print(f"⚠️ 消息解析错误: {e}")

# 创建客户端
client = mqtt_client.Client(client_id)
client.username_pw_set(username, password)
client.on_connect = on_connect
client.on_message = on_message

# 连接并开始循环
client.connect(broker, port)
client.loop_forever()  # 阻塞式循环,持续接收消息

注:使用时需要将broker 的ip 设置为自己的ip,另本人提供的发布者&订阅者脚本示例是paho-mqtt  1.6.1版本的。

可以通过下面的命令进行安装:

pip install paho-mqtt==1.6.1 -i https://mirrors.aliyun.com/pypi/simple/

如果你需要 MQTT 5.0 功能(如原因码、用户属性、共享订阅等),可尝试 2.x

pip install paho-mqtt==2.1.0 -i https://mirrors.aliyun.com/pypi/simple/

注:安装 paho-mqtt  2.x版本上面的发布者&订阅者脚本示例运行会报错,可以根据报错信息提示进行修改,这里就不提供 paho-mqtt  2.x版本的示例程序了。

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值