2016-03-23 27 views
1

私のネットワークには、1883(mqtt)でリッスンしているActiveMQブローカがあります。単純なJavaアプリケーションとmqtt-client-0.4.0.jarライブラリを使用してそのブローカに接続すると、すべてが動作します。Paho Mqtt Androidがブローカに接続すると失敗する(32103)

今Androidデバイスでそのブローカーに接続します。残念ながら、私は成功した接続を得るためにそれを管理することはできません。

03-23 11:08:15.679 24572-24572/com.my.package E/WorkerMQTT: onFailure: Unable to connect to server (32103) - java.net.ConnectException: failed to connect to /192.192.192.10 (port 1883) after 30000ms: isConnected failed: ENETUNREACH (Network is unreachable) 
03-23 11:08:15.687 24572-24572/com.my.package W/System.err: Unable to connect to server (32103) - java.net.ConnectException: failed to connect to /192.192.192.10 (port 1883) after 30000ms: isConnected failed: ENETUNREACH (Network is unreachable) 
03-23 11:08:15.695 24572-24572/com.my.package W/System.err:  at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:79) 
03-23 11:08:15.695 24572-24572/com.my.package W/System.err:  at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:590) 
03-23 11:08:15.695 24572-24572/com.my.package W/System.err:  at java.lang.Thread.run(Thread.java:856) 
03-23 11:08:15.695 24572-24572/com.my.package W/System.err: Caused by: java.net.ConnectException: failed to connect to /192.192.192.10 (port 1883) after 30000ms: isConnected failed: ENETUNREACH (Network is unreachable) 
03-23 11:08:15.703 24572-24572/com.my.package W/System.err:  at libcore.io.IoBridge.isConnected(IoBridge.java:224) 
03-23 11:08:15.703 24572-24572/com.my.package W/System.err:  at libcore.io.IoBridge.connectErrno(IoBridge.java:161) 
03-23 11:08:15.703 24572-24572/com.my.package W/System.err:  at libcore.io.IoBridge.connect(IoBridge.java:112) 
03-23 11:08:15.703 24572-24572/com.my.package W/System.err:  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 
03-23 11:08:15.703 24572-24572/com.my.package W/System.err:  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) 
03-23 11:08:15.703 24572-24572/com.my.package W/System.err:  at java.net.Socket.connect(Socket.java:842) 
03-23 11:08:15.703 24572-24572/com.my.package W/System.err:  at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:70) 
03-23 11:08:15.703 24572-24572/com.my.package W/System.err:  ... 2 more 
03-23 11:08:15.703 24572-24572/com.my.package W/System.err: Caused by: libcore.io.ErrnoException: isConnected failed: ENETUNREACH (Network is unreachable) 
03-23 11:08:15.703 24572-24572/com.my.package W/System.err:  at libcore.io.IoBridge.isConnected(IoBridge.java:208) 
03-23 11:08:15.703 24572-24572/com.my.package W/System.err:  ... 8 more 

私が使用してMqttWorker extends Thread{を呼び出すAndroidのサービスだ:私は常に、次のエラーを取得しています。また

ライブラリとして私が使用しています:

compile('org.eclipse.paho:org.eclipse.paho.android.service:1.0.2') { 
     exclude module: 'support-v4' 
} 

を私の労働者の次のコード:

@Override 
public void run() { 
String clientId = "AndroidSub_7"; 

    try { 
     this.client = 
      new MqttAndroidClient(this.context, "tcp://192.192.192.10:1883", clientId); 

     this.options = new MqttConnectOptions(); 
     this.options.setWill("clients/clienterrors", "crashed".getBytes(),2,true); // handle uncleanly closed subscribers 

     this.client.setCallback(new ClientCallbacks()); // set new callbacks 
     this.client.connect(options); 

     IMqttToken conToken; 

     conToken = client.connect(options, this.context, new IMqttActionListener() { 
     @Override 
     public void onSuccess(IMqttToken asyncActionToken) { 
      Log.d(TAG, "onSuccess"); 
     } 

     @Override 
     public void onFailure(IMqttToken asyncActionToken, Throwable exception) { 
      Log.e(TAG, "onFailure: " + exception); 
      exception.printStackTrace(); 
     } 

     }); 
    } catch (MqttException e) { 
     Log.e(TAG,"Connection to broker failed:" + e); 
    } 
} 

は、私がこれまで試したどのような:

  1. 使用していないことを確認しましたループバックアドレス(多くのスレッドはこれについてです)
  2. 私はhav e AndroidManifest.xmlWAKE_LOCK /INTERNET/WRITE_EXTERNAL_STORAGE/ACCESS_NETWORK_STATE
  3. a socketを使用してポートに接続できるかどうかを確認する簡単なスレッドクラスを作成しました。それは成功した。
  4. 私がMqttAndroidClientまたはMqttClientを使用しているかどうかは関係ありません。エラーは同じです。

誰かが私を助けてくれることを願っています。私はこれを解決するためのアイデアが不足しています。

+0

これは本当のAndroid搭載端末ですか、エミュレータですか? – hardillb

+0

ホストへの経路がないというエラーは、デバイス/エミュレータが接続されたネットワークがブローカに到達する手段がないことを意味します。ネットワークの設定(ブローカーのホストはどこにあり、クライアントはどのネットワークに接続されていますか)の詳細をお知らせください – hardillb

答えて

1

私は実際のAndroid搭載端末を使用しました。 ネットワークの詳細については、adb shellでAndroid搭載端末に接続しました。 pingコマンドから私は次のようになりました From 192.192.192.1 icmp_seq=2 Destination Net Unreachable奇妙なことに、それはまだソケットテストを使用して働いた。全体として、はデバイスを再起動して動作します。答えはそれほど満足できるものではないかもしれませんが、少なくとも今はうまくいきます。

+0

ファイアウォールをチェックすると、接続がブロックされている可能性があります – Clocker

関連する問題