Xmpp 连接因 smack 失败

Posted

技术标签:

【中文标题】Xmpp 连接因 smack 失败【英文标题】:Xmpp connection failed with smack 【发布时间】:2015-07-08 11:02:23 【问题描述】:

我目前有一个 android 应用程序,我在其中使用 smack 库连接到我的 XMPP 服务器。这个应用程序过去已经工作了,但是从今天开始,我的平板电脑无法连接到服务器。

上线:

connection.connect();

我收到了这个错误:

W/System.err﹕ org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: '192.168.57.100:5222' failed because java.net.ConnectException: failed to connect to /192.168.57.100 (port 5222) after 30000ms: isConnected failed: EHOSTUNREACH (No route to host)

W/System.err﹕ at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectUsingConfiguration(XMPPTCPConnection.java:596)
07-08 11:46:19.730  13812-14023/com.crisalid.EcranCuisine W/System.err﹕ at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:830)
07-08 11:46:19.730  13812-14023/com.crisalid.EcranCuisine W/System.err﹕ at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:360)
07-08 11:46:19.730  13812-14023/com.crisalid.EcranCuisine W/System.err﹕ at com.crisalid.EcranCuisine.PosteFabActivity$XMPPAsyncTask.doInBackground(PosteFabActivity.java:583)
07-08 11:46:19.730  13812-14023/com.crisalid.EcranCuisine W/System.err﹕ at com.crisalid.EcranCuisine.PosteFabActivity$XMPPAsyncTask.doInBackground(PosteFabActivity.java:284)
07-08 11:46:19.730  13812-14023/com.crisalid.EcranCuisine W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
07-08 11:46:19.730  13812-14023/com.crisalid.EcranCuisine W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
07-08 11:46:19.731  13812-14023/com.crisalid.EcranCuisine W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
07-08 11:46:19.731  13812-14023/com.crisalid.EcranCuisine W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
07-08 11:46:19.731  13812-14023/com.crisalid.EcranCuisine W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
07-08 11:46:19.731  13812-14023/com.crisalid.EcranCuisine W/System.err﹕ at java.lang.Thread.run(Thread.java:848)

还有一些奇怪的事情:我在平板电脑和手机上安装了这个应用程序。使用完全相同的配置,我的手机上不会出现此错误,但我的平板电脑上会出现此错误。

我已经尝试在平板电脑上禁用/启用我的 wifi,但没有任何变化。 我检查了服务器是否已启动,并且正在运行。

你有什么想法吗?

【问题讨论】:

但是从明天开始 :) 回到未来?当然是网络环境(硬件/设置)错误... 从今天开始抱歉。如果是网络环境错误,应用程序不应该在我的任何设备上都无法运行? 但错误很明显:设备无法访问 192.168.57.1​​00 ...因此,设备连接到不同/未路由的网络,如其他 WIFI 甚至 3g 连接...设置一些网络服务器在 192.168.57.1​​00 然后使用设备上的浏览器并检查是否正常工作... 我在手机上禁用了 3g,并将手机和平板电脑连接在同一个网络上。我可以用手机连接到 xmpp 服务器,但不能用平板电脑连接。重启routeur有帮助吗? 【参考方案1】:

Selvin 是对的,我的平板电脑连接到正确的 wifi,但 dhcp 将我的 IP 错误归咎于我。 在我的平板电脑上,IP 是 10.20.64.152,所以它不在良好的网络上(即 192.168.57.*)。

解决办法是设置一个静态ip。

【讨论】:

以上是关于Xmpp 连接因 smack 失败的主要内容,如果未能解决你的问题,请参考以下文章

Smack XMPP 连接未通过 4G 网络连接

android中的XMPP连接使用smack

Smack XMPP 连接状态,数据不正确

如何使用 Smack XMPP 库创建 SSL 连接?

尝试通过 Smack 连接 XMPP 服务器并出现错误

Smack XMPP android 连接时崩溃