Java Paho Mqtt Android连接到代理失败(32103)

Java Paho Mqtt Android连接到代理失败(32103),java,android,mqtt,paho,Java,Android,Mqtt,Paho,我的网络中有一个ActiveMQ代理在监听1883(mqtt)。如果我使用一个简单的Java应用程序和mqtt-client-0.4.0.jar库连接到该代理,那么一切都可以正常工作 现在我想用安卓设备连接到该代理。不幸的是,我就是无法成功连接。我总是遇到以下错误: 03-23 11:08:15.679 24572-24572/com.my.package E/WorkerMQTT: onFailure: Unable to connect to server (32103) - java.ne

我的网络中有一个ActiveMQ代理在监听1883(mqtt)。如果我使用一个简单的Java应用程序和mqtt-client-0.4.0.jar库连接到该代理,那么一切都可以正常工作

现在我想用安卓设备连接到该代理。不幸的是,我就是无法成功连接。我总是遇到以下错误:

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
我正在使用Android服务,它调用
MqttWorker扩展线程{

作为我使用的图书馆:

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);
    }
}
到目前为止,我尝试的是:

  • 确保不要使用环回地址(这里有很多线程都是关于这个的)
  • 确保我在
    AndroidManifest.xml
    WAKE\u LOCK/INTERNET/WRITE\u EXTERNAL\u STORAGE/ACCESS\u NETWORK\u状态中设置了所需的权限
  • 我创建了一个简单的线程类来检查是否可以使用连接到端口。它成功了
  • 无论我使用的是
    MqttAndroidClient
    还是
    MqttClient
    ,错误都是一样的

  • 我希望有人能帮我。我没有办法解决这个问题。

    我用的是真正的安卓设备。 为了获得更多关于网络的信息,我通过
    adbshell
    连接到Android设备
    从192.192.192.1 icmp_seq=2目标网络无法访问
    。奇怪的是,它仍然使用套接字测试工作。总体而言,我重新启动了设备,现在它可以工作了。答案可能不太令人满意,但至少它现在可以工作了。

    这是真正的Android设备还是模拟器?无主机路径错误意味着您的设备/仿真器连接到的任何网络都无法到达代理。请提供有关您的网络设置的详细信息(代理托管在哪里,客户端连接到哪个网络)检查防火墙,它可能会阻止连接