我正在使用 Mosquitto 代理在我的 Windows 机器上运行一个 MQTT 代理。我已经通过 Paho MQTT python 库在同一台 Windows 机器上设置了一个客户端。另一个客户端是在我拥有的 Linux 机器上使用相同的 python 库设置的。
因此,当我从 Windows 客户端发布文件时,它可以轻松到达 Linux 客户端,没有任何问题。但是,当我尝试从 Linux 客户端发布文件时,它无法到达我的 Windows 客户端。后来我注意到如果文件大小大于50KB,文件不会从linux机器传输。如果文件大小超过 50KB,来自代理的日志不会显示“收到的发布消息”。
Windows机器发布的代码:
import paho.mqtt.client as mqtt
import time
client = mqtt.Client("P2")
client.on_message=on_message
print("COnnecting")
client.connect("localhost")
print("Connected")
f = open("D:/Downloads/test.txt",'rb')
imagestring = f.read()
byteArray = bytearray(imagestring)
print("Publishing")
client.publish("photo", byteArray)
Linux机器订阅代码:
import paho.mqtt.client as mqtt
import time
def on_message(mosq, obj, msg):
with open('test.txt', 'wb') as fd:
fd.write(msg.payload)
print("message topic=",msg.topic)
client = mqtt.Client("P1")
client.on_message=on_message
print("COnnecting")
client.connect("192.168.1.115")
client.loop_start()
print("Subbing")
client.subscribe("photo")
time.sleep(1000)
client.loop_stop()
Windows机器订阅的代码:
import paho.mqtt.client as mqtt
import time
def on_message(mosq, obj, msg):
with open('test.txt', 'wb') as fd:
fd.write(msg.payload)
print("message topic=",msg.topic)
client = mqtt.Client("P2")
client.on_message=on_message
print("COnnecting")
client.connect("localhost")
client.loop_start()
print("Subbing")
client.subscribe("photo")
time.sleep(1000)
client.loop_stop()
Linux机器发布的代码:
import paho.mqtt.client as mqtt
import time
client = mqtt.Client("P1")
print("COnnecting")
client.connect("192.168.1.115")
print("Connected")
f = open("/opt/plcnext/test.txt","rb")
imagestring = f.read()
byteArray = bytearray(imagestring)
print("Publishing")
client.publish("photo", byteArray)
Linux机器端有什么限制吗?还是我在这里做错了什么?