Errno 113无法为Python MQTT Client托管的路由

问题描述

我的ActiveMQ Server运行在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",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",60) 

收件人:

client.connect("0.0.0.0",60)

谁能解释这可能是什么原因?

EDIT1:

工作代码

def on_connect(client,userdata,flags,rc):
    print("Connected with result code {0}".format(str(rc)))  
    client.subscribe("app/status")


def on_disconnect(client,rc):
    logger.info("disconnected with result code {0}".format(str(rc)))


def on_message(client,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",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()

无效代码 如果我从其他机器上运行此代码,则效果很好。仅当ActiveMQ和此代码在同一服务器上运行时,它才会产生问题

def on_connect(client,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",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()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)