2017-04-14 69 views
1

我正在笔记本电脑上运行MQTT Mosquitto broker。然后我试图连接2个Paho MQTT客户端:1)使用Java Paho的Android手机和2)使用Python Paho的Raspberry Pi。MQTT帕霍客户端连接超时错误

从Android的连接是完全制造。没问题。

然而,覆盆子出于某种原因无法连接。代替client.connect方法块和在一段时间后,收到以下:

Traceback (most recent call last): 
    File "sensorsClient.py", line 28, in <module> 
    client.connect(mqttServer, 1883) 
    File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 700, in connect 
    return self.reconnect() 
    File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 822, in reconnect 
    sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0)) 
    File "/usr/lib/python2.7/socket.py", line 571, in create_connection 
    raise err 
socket.error: [Errno 110] Connection timed out 

用于连接的代码如下:

import paho.mqtt.client as mqtt 

def on_connect(client, userdata, flags, rc): 
    print("Connected with result code "+str(rc)) 
    client.subscribe("$SYS/#") 

def on_message(client, userdata, msg): 
    print(msg.topic+" "+str(msg.payload)) 

mqttServer = 'zzz.xxx.ccc.qqq' # Public IP of the laptop 


client = mqtt.Client("", True, None, mqtt.MQTTv31) 
client.on_connect = on_connect 
client.on_message = on_message 

client.connect(mqttServer, 1883) 
client.loop_start() 

的everythin经由WIFI一个网络内进行的。没有移动数据。有人可以解释我为什么会发生这种情况吗?

+0

你可以包括应用程序的其余代码,所以我们可以看到所有的请。你有没有检查过,你可以ping从pi的笔记本电脑和'mqttServer'变量是正确的主机名/ IP地址(没有额外的空白空间) – hardillb

+0

@hardillb我可以用我的笔记本电脑。 mqttServer是一个标准为'xxx.zzz.qqq.ttt'格式的IP(检查过几次)的字符串。不会发布它,因为隐私:) – tomkou

+0

我问你是否可以ping通另一种方式,从Pi到笔记本电脑。还请添加代码的其余部分,你可以,如果你想更换IP地址(但假设它是一个192.168.XX或10.xxx的地址,它是从你的本地网络才能访问) – hardillb

回答

0

一个可以运行首先检查的是通过你的代理配置(如果它自己的经纪人,否则请向您的证书供应商),并且看,如果你已经为连接或没有任何用户名/密码。这很可能是您的连接超时在客户端上的问题。

如果是这样,你只需要在客户端配置来设置用户名/密码等的情况:

client.username_pw_set("username_on_broker", "password_on_broker")

此外,我会建议使用urlparse.urlparse("broker url")消毒/标准化你的经纪人URL

待办事项伸出援手以防止这种情况对你没有帮助。

相关问题