Errno 113 Python MQTT客户端没有到主机的路由
我让ActiveMQ服务器在192.168.11.11上运行,为了测试,我尝试从同一台服务器上运行MQTT客户机,结果出现以下错误Errno 113 Python MQTT客户端没有到主机的路由,python,python-2.7,activemq,mqtt,Python,Python 2.7,Activemq,Mqtt,我让ActiveMQ服务器在192.168.11.11上运行,为了测试,我尝试从同一台服务器上运行MQTT客户机,结果出现以下错误 [Errno 113] No route to host Traceback (most recent call last): File "mqtt-client.py", line 45, in <module> client.connect("192.168.11.11", 30083, 60)
[Errno 113] No route to host
Traceback (most recent call last):
File "mqtt-client.py", line 45, in <module>
client.connect("192.168.11.11", 30083, 60) # Connect to (broker, port, keepalive-time)
File "/usr/lib/python2.7/site-packages/paho/mqtt/client.py", line 839, in connect
return self.reconnect()
File "/usr/lib/python2.7/site-packages/paho/mqtt/client.py", line 962, in reconnect
sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0))
File "/usr/lib64/python2.7/socket.py", line 571, in create_connection
raise err
error: [Errno 113] No route to host
Traceback (most recent call last):
File "mqtt-client.py", line 45, in <module>
client.connect("192.168.11.11", 30083, 60) # Connect to (broker, port, keepalive-time)
File "/usr/lib/python2.7/site-packages/paho/mqtt/client.py", line 839, in connect
return self.reconnect()
File "/usr/lib/python2.7/site-packages/paho/mqtt/client.py", line 962, in reconnect
sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0))
File "/usr/lib64/python2.7/socket.py", line 571, in create_connection
raise err
socket.error: [Errno 113] No route to host
检查netstat
netstat -tulnp | grep 30083
tcp 1 0 0.0.0.0:30083 0.0.0.0:* LISTEN 15815/kube-proxy
但是当我像下面这样修改代码时,它就工作了
发件人:
致:
有人能解释一下原因吗
EDIT1:
工作代码
不工作代码
如果我从其他机器上运行此代码,它可以正常工作。它仅在ActiveMQ和此代码在同一服务器上运行时才会产生问题
def on_connect(client, userdata, flags, rc):
print("Connected with result code {0}".format(str(rc)))
client.subscribe("app/status")
def on_disconnect(client, userdata, rc):
logger.info("Disconnected with result code {0}".format(str(rc)))
def on_message(client, userdata, msg):
print("Message received-> " + msg.topic )
try:
log_setup()
client = mqtt.Client("amq_comm_test")
client.enable_logger(logger)
client.on_connect = on_connect
client.on_message = on_message
client.connect("192.168.11.11", 30083, 60)
client.loop_forever()
except KeyboardInterrupt:
logging.warn("Cancelled by user")
except Exception as ex:
logging.exception("Unhandled error\n{}".format(ex))
raise
finally:
logging.shutdown()
好,
0.0.0
对于目标地址仍然没有意义,您应该尝试使用127.0.0.1
。但是本地IP地址的无主机路由错误
可能意味着路由表混乱。您是否在与broke相同的机器上运行了telnet
,或者在其他地方运行过?它也适用于127.0.0.1,我在同一台机器上运行telnet,它也可以运行。
client.connect("192.168.11.11", 30083, 60)
client.connect("0.0.0.0", 30083, 60)
def on_connect(client, userdata, flags, rc):
print("Connected with result code {0}".format(str(rc)))
client.subscribe("app/status")
def on_disconnect(client, userdata, rc):
logger.info("Disconnected with result code {0}".format(str(rc)))
def on_message(client, userdata, msg):
print("Message received-> " + msg.topic )
try:
log_setup()
client = mqtt.Client("amq_comm_test")
client.enable_logger(logger)
client.on_connect = on_connect
client.on_message = on_message
client.connect("0.0.0.0", 30083, 60)
client.loop_forever()
except KeyboardInterrupt:
# handle Ctrl-C
logging.warn("Cancelled by user")
except Exception as ex:
logging.exception("Unhandled error\n{}".format(ex))
raise
finally:
logging.shutdown()
def on_connect(client, userdata, flags, rc):
print("Connected with result code {0}".format(str(rc)))
client.subscribe("app/status")
def on_disconnect(client, userdata, rc):
logger.info("Disconnected with result code {0}".format(str(rc)))
def on_message(client, userdata, msg):
print("Message received-> " + msg.topic )
try:
log_setup()
client = mqtt.Client("amq_comm_test")
client.enable_logger(logger)
client.on_connect = on_connect
client.on_message = on_message
client.connect("192.168.11.11", 30083, 60)
client.loop_forever()
except KeyboardInterrupt:
logging.warn("Cancelled by user")
except Exception as ex:
logging.exception("Unhandled error\n{}".format(ex))
raise
finally:
logging.shutdown()