2015-12-15 2 views
2

Я хочу проверить, что данный IP-адрес и порт выполняются в MQTT, если нет, то я должен показать исключение для пользователя. Вот мой код,MQTT - проверка неверного IP и порта

try { 

       MqttMessage message2 = new MqttMessage(); 
       MQTT mqtt_connect = new MQTT(); 
       mqtt_connect.setHost(Host_Address, port); 

       String topic = "/call/MQTT_Config"; 
       mqtt_connect.setClientId("MQTT_Config"); 
       mqtt_connect.setWillRetain(false); 
       mqtt_connect.isWillRetain(); 
       mqtt_connect.setWillTopic(topic); 
       BlockingConnection m_publisher = mqtt_connect.blockingConnection(); 

       m_publisher.connect(); 

       if(m_publisher.isConnected()){ 
        System.out.println("connected"); 

       m_publisher.disconnect(); 
       } 
       else 
       { 
        System.out.println("not connected"); 
        return "Port or IP may not running"; 
       } 




      } catch (Exception e) { 
       e.printStackTrace(); 
       return "failure"; 
      } 

, когда я дать правильный IP и порт, то он идет в if(m_publisher.isConnected()) состоянии нормально, но когда я дать неправильный IP или порт, то он приходит до m_publisher.connect(); и тогда не произойдет ничего, как только загрузка консоль . Не буду дальше. Зачем?

Я должен показать некоторую проверку, когда пользователь дает несовпадающий IP-адрес или порт MQTT. где я делаю неправильно?

ответ

0

Проблема здесь будет зависеть от того, что пользователь вводит.

  1. Если ввести IP-адрес машины, которая существует, но не прослушивает порт, то машина будет быстро реагировать с сообщением

  2. соединения отказался Если ввести IP-адрес для машины который не существует, тогда код будет ждать таймаута TCP (по умолчанию 15 минут), прежде чем поднимать ошибку.

+0

ОК я понимаю. так что такое решение для этого? можно ли установить тайм-аут TCP 1 мин? – MMMMS

Смежные вопросы