2017-04-14 70 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

待辦事項伸出援手以防止這種情況對你沒有幫助。

相關問題