当前位置: 首页 > 面试题库 >

Paho Mqtt Android连接到代理失败并显示(32103)

东方夕
2023-03-14
问题内容

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

现在,我想使用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

我使用的是Android服务,该服务调用MqttWorker extends Thread{

另外作为图书馆,我正在使用:

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. 确保我已在中设置了所需的权限 AndroidManifest.xml WAKE_LOCK /INTERNET / WRITE_EXTERNAL_STORAGE / ACCESS_NETWORK_STATE
  3. 我创建了一个简单的线程类,以检查是否可以使用套接字连接到端口。成功了。
  4. 我是否使用MqttAndroidClientor 都没有关系MqttClient。错误是一样的。

我希望有一个人可以帮助我。我没办法解决这个问题了。


问题答案:

我使用了真正的Android设备。要获取有关网络的更多信息,我通过接入了Android设备adb shell。从ping命令,我得到以下信息 From 192.192.192.1 icmp_seq=2 Destination Net Unreachable。奇怪的是,它仍然可以使用套接字测试工作。总体而言,我 重新启动了设备
,现在可以使用了。答案可能不尽如人意,但至少现在可以了。



 类似资料:
  • 我是Anylogic的新手,我正在尝试使用Anylogic进行建模。我想通过网络将GIS环境中的6种类型的代理连接起来。 连接的条件如下:代理类型1有10个代理,代理类型2有16个代理,代理类型6有20个代理。 为此,我使用了“链接到代理”,并通过单击属性中的“绘制连接代理的线条”tickbox来动画连接。当我运行模型时,代理之间的连接线没有显示,但是结果显示代理是连接的。 有什么建议(显示代理之

  • 问题内容: 尝试上使用。 无论软件包如何,pip安装都会失败。例如,还会导致SSL错误。 原始安装的Python 3.4.1包含pip 1.5.6。我尝试做的第一件事是安装已经安装,它是ArcGIS附带的。python并且pip直到我安装3.4.1时才可从命令行使用。 作品。可能是因为点子搜索无法验证站点的SSL证书。 我在公司网络中,但是我们不通过代理访问Internet。 每台公司计算机(包括

  • 我正在尝试使用ccdt.tab文件连接到队列管理器。以下是我所尝试的: 以下是ccdt.tab中的内容 有谁知道哪里出了问题,怎么修复? PS:我确实看到了那些帖子:在JMS中使用CCDT文件连接到IBM MQ 下面是链接的异常和异常在I时打印出来的: 以下是当我时链接的异常和异常打印:

  • 问题内容: 在Windows上连接Jenkins从属代理失败,连接超时。 环境:Windows Server 2003 R2 Java6 掌握:Linux从属:Windows 我尝试将其同时运行为jnlp和java -jar cmd,但始终失败。 问题答案: 您没有提供太多信息,但是从错误消息中,您似乎暗示您的构建计算机正在Amazon EC2上运行。 在这种情况下,您的EC2实例安全组可能不允许

  • 我想连接Java类文件与SQL server 2012。我已通过SQL server身份验证登录。但我接收到连接错误。 错误:到主机127.0.0.1端口1433的TCP/IP连接失败。错误:“连接拒绝:连接。验证连接属性。确保主机上正在运行SQL Server实例并接受端口上的TCP/IP连接。确保到端口的TCP连接没有被防火墙阻止。” 我的代码---