Ошибка № 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)  # 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
  

Я подключился к telnet с того же компьютера-брокера

 # telnet 192.168.11.11 30083
Trying 192.168.11.11...
Connected to 192.168.11.11.
Escape character is '^]'.
  

Проверьте netstat

 netstat -tulnp | grep 30083
tcp        1      0 0.0.0.0:30083           0.0.0.0:*               LISTEN      15815/kube-proxy
  

Но когда я изменил код, как показано ниже, и он работает

От:

 client.connect("192.168.11.11", 30083, 60) 
  

Для:

 client.connect("0.0.0.0", 30083, 60)
  

Кто-нибудь может объяснить, в чем может быть причина этого?

ПРАВКА1:

Рабочий код

 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 errorn{}".format(ex))
    raise
finally:
    logging.shutdown()
  

Не рабочий код
Если я запускаю этот код с другого компьютера, он работает нормально. это создает проблему только тогда, когда 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 errorn{}".format(ex))
    raise
finally:
    logging.shutdown()
  

Комментарии:

1. Хорошо, 0.0.0.0 все еще бессмысленно для адреса назначения, вы должны попробовать с 127.0.0.1 . Но No route to host error для локального IP-адреса может означать, что ваша таблица маршрутизации перепутана. Вы запускались telnet на той же машине, что и сломанный, или еще где?

2. Это работает и с 127.0.0.1, я запускаю telnet с того же компьютера, и это работает.