getaddrinfo 失败 socket.gaierror[11001] (python) (mqtt)
getaddrinfo failed with socket.gaierror[11001] (python) (mqtt)
我创建了一个 android 应用程序,它通过 MQTT 发布消息。我正在创建一个 python 程序来接收命令。但是,当我 运行 它时,我总是遇到错误。
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 = "harismuha123@github/#"
client.subscribe(TOPIC)
client.loop_forever()
TOPIC = "harismuha123@github"
client.publish(TOPIC, "message from python")
import time
time.sleep(0.05)
我做错了什么?
您似乎无法解析主机名。
>>> 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 地址,您可以先尝试使用它。
将您的主题从 "harismuha123@github/#" 更改为 "harismuha123@github/whatever" 并删除所有评论,因为符号“#”是 mqtt 协议的特殊字符。
我创建了一个 android 应用程序,它通过 MQTT 发布消息。我正在创建一个 python 程序来接收命令。但是,当我 运行 它时,我总是遇到错误。
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 = "harismuha123@github/#"
client.subscribe(TOPIC)
client.loop_forever()
TOPIC = "harismuha123@github"
client.publish(TOPIC, "message from python")
import time
time.sleep(0.05)
我做错了什么?
您似乎无法解析主机名。
>>> 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 地址,您可以先尝试使用它。
将您的主题从 "harismuha123@github/#" 更改为 "harismuha123@github/whatever" 并删除所有评论,因为符号“#”是 mqtt 协议的特殊字符。