2016-11-17 1 views
0

MQTT를 통해 메시지를 게시하는 Android 앱을 만들었습니다. 나는 명령을 받기위한 파이썬 프로그램을 만드는 중이다. 그러나, 나는 그것을 실행할 때 항상 오류가 발생합니다.getaddrinfo failed to socket.gaierror [11001] (python) (mqtt)

Traceback (most recent call last): 
File "mqttapptest.py", line 13, in <module> 
client.connect(MQTTHOST) 
File "E:\Anaconda\lib\site-packages\paho\mqtt\client.py", line 686, in connect 
return self.reconnect() 
File "E:\Anaconda\lib\site-packages\paho\mqtt\client.py", line 808, in reconnect 
sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0)) 
File "E:\Anaconda\lib\socket.py", line 693, in create_connection 
for res in getaddrinfo(host, port, 0, SOCK_STREAM): 
File "E:\Anaconda\lib\socket.py", line 732, in getaddrinfo 
for res in _socket.getaddrinfo(host, port, family, type, proto, flags): 
socket.gaierror: [Errno 11001] getaddrinfo failed 

내 소스 코드는 다음과 같습니다 : 내가 잘못 뭐하는 거지

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import paho.mqtt.client as mqtt 

MQTTHOST = "free.mqtt.shiguredo.jp" 
USERNAME = "<username>" 
PASSWORD = "<password>" 

client = mqtt.Client(protocol=mqtt.MQTTv311) 
client.username_pw_set(USERNAME, PASSWORD) 

client.connect(MQTTHOST) 

TOPIC = "[email protected]/#" 
client.subscribe(TOPIC) 

client.loop_forever() 

TOPIC = "[email protected]" 
client.publish(TOPIC, "message from python") 

import time 
time.sleep(0.05) 

?

+0

free.mqtt.shiguredo.jp도 나를 위해 해결되지 않으므로 @ Ipiner의 대답이 정확하다고 생각합니다. 비록 당신이 대답을 했음에도 불구하고 게시 한 패스워드가 실제 Github 토큰이거나 어딘가의 유효한 패스워드 일지라도이 질문을 삭제해야합니다. – hardillb

답변

1

호스트 이름을 확인할 수없는 것처럼 보입니다.

>>> socket.getaddrinfo('reddit.com', 22) 
    [(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('151.101.65.140', 22)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_DGRAM: 2>, 17, '', ('151.101.65.140', 22)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_RAW: 3>, 0, '', ('151.101.65.140', 22)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('151.101.129.140', 22)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_DGRAM: 2>, 17, '', ('151.101.129.140', 22)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_RAW: 3>, 0, '', ('151.101.129.140', 22)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('151.101.193.140', 22)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_DGRAM: 2>, 17, '', ('151.101.193.140', 22)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_RAW: 3>, 0, '', ('151.101.193.140', 22)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('151.101.1.140', 22)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_DGRAM: 2>, 17, '', ('151.101.1.140', 22)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_RAW: 3>, 0, '', ('151.101.1.140', 22))] 
>>> socket.getaddrinfo('free.mqtt.shiguredo.jp', 8080) 
    Traceback (most recent call last): 
     File "<stdin>", line 1, in <module> 
     File "/usr/lib/python3.5/socket.py", line 732, in getaddrinfo 
     for res in _socket.getaddrinfo(host, port, family, type, proto, flags): 
    socket.gaierror: [Errno -2] Name or service not known 
>>> socket.gethostbyname('free.mqtt.shiguredo.jp') 
    Traceback (most recent call last): 
     File "<stdin>", line 1, in <module> 
    socket.gaierror: [Errno -2] Name or service not known 
>>> socket.gethostbyname('reddit.com') 
    '151.101.65.140' 

연결하려는 서버의 IP 주소가있는 경우 먼저 연결을 시도해보십시오.

0

"harismuha123 @ github/#"에서 "harismuha123 @ github/whatever"로 주제를 변경하고 "#"기호가 mqtt 프로토콜의 특수 문자이므로 모든 설명을 삭제하십시오.

+0

따옴표로 묶인 문자열 내에서'# '는 와일드 카드 주제를 나타 내기 위해 완벽하게 괜찮습니다. 또한 주석은 MQTT 주제에 영향을 미치지 않습니다. – hardillb

+0

작은 따옴표 나 큰 따옴표가 있습니까? –

관련 문제