使用paho-mqtt-python在不同系统之间建立mqtt连接:

时间:2017-04-12 06:47:46

标签: python mqtt

我使用了以下代码,我收到了这个错误:

Time out error : [WinError 10060] A connection attempt  failed because the connected party did not properly respond after a period of time, or established connection failed because connected host failed to respond.

我也关闭了我正在使用的系统中的防火墙,但我仍然遇到了这个错误。

#!/usr/bin/env python3

import paho.mqtt.client as mqtt

# This is the Publisher

client = mqtt.Client()
client.connect("10.12.114.103",1883,60)
client.publish("topic/test", "Hello world!");
client.disconnect();

1 个答案:

答案 0 :(得分:0)

问题可能不在于您的python代码,因为我尝试使用hivemq的公共测试服务器进行略微修改的版本,并且它工作正常。这是我试过的版本:

#!/usr/bin/env python3

import paho.mqtt.client as mqtt

# This is the Publisher

def on_log(client, userdata, level, buf):
    print(level, buf)

client = mqtt.Client()
client.on_log = on_log
client.connect("broker.hivemq.com",1883,60)
client.publish("topic/test", "Hello world!");
client.disconnect();

请注意,我修改了它以返回日志输出,这对调试它很有用。脚本返回:

16 Sending PUBLISH (dFalse, q0, r0, m1, 'topic/test', ... (12 bytes)

我对连接成功的期望是什么。我还用mosquitto测试服务器检查了你的代码,它工作正常。

您的经纪人似乎不接受您的连接尝试。如果您尝试使用公共测试服务器并且仍然无法正常工作,则表明某些内容正在干扰您在端口1883上的流量。

我认为这是一个代理问题,但是,我确实注意到你没有使用任何网络循环函数(如client.loop_start),根据paho文档,这可能会导致不可预测的行为。您可以尝试添加这样的循环以查看是否有帮助

client = mqtt.Client()
client.on_log = on_log
client.connect("broker.hivemq.com",1883,60)
client.loop_start
client.publish("topic/test", "Hello world!");
client.disconnect();
client.loop_stop