android - 无法将 Android 客户端与本地 XMPP 服务器连接

标签 android client-server xmpp smack tigase

这是关于帖子 here

我能够将我的 PC 连接到本地的本地 tigase 服务器设置(我正在使用 Smack API)。现在,当我想通过 Wi-Fi 将 Android 手机连接到该服务器时,我遇到了问题。我可以使用客户端 Beem for android 连接到本地服务器。服务器的 XMPP 域名是我的 PC 名称“mwbn43-1”,IP 地址是“192.168.0.221”(我可以从安卓终端模拟器)。在 Beem 设置中有一个高级选项,我可以在其中指定我想要连接的服务器(我已将其作为 IP 地址给出)。如果我不设置此选项,我将无法连接。现在这里是我用于我的 android 客户端的代码。

    XMPPConnection.DEBUG_ENABLED = true;
    ConnectionConfiguration config = new ConnectionConfiguration("mwbn43-1",5222);

    //ConnectionConfiguration config = new ConnectionConfiguration("192.168.0.221",5222);             
    config.setSASLAuthenticationEnabled(false);
    config.setCompressionEnabled(false);

    XMPPConnection xmpp = new XMPPConnection(config);

    try {

            xmpp.connect(); 

            xmpp.login("admin@mwbn43-1", "tigase");
            String host = xmpp.getHost();
            String id = xmpp.getConnectionID();
            int port = xmpp.getPort();
            boolean i = false;
            i = xmpp.isConnected();
            if(i)
            {answer = "Connected to " + host + " via port " + port + " with ID " + id;
            answerfield.setText(answer);}

          }//end try 
    catch (XMPPException e) {  
     answerfield.setText("Failed to connect");
     Log.v(TAG, "Failed to connect to " + xmpp.getHost());
            e.printStackTrace();

我还可以借助此代码连接到 google talk 服务器。在与本地服务器建立连接时,我尝试提供 IP 地址和主机名进行连接。当我提供 IP 地址(192.168.0.221)时,我得到带有流的“服务器错误无响应”:错误(主机未知),当我提供主机名(mwbn43-1)时,我得到主机未解析的“远程服务器超时(504)”。

我查看了 Beem 的代码,看看它是如何与服务器连接的,但找不到太多。我也给了用户互联网权限。谁能告诉我应该添加哪些代码行来与本地服务器通信.

最佳答案

尝试 3 个参数的 ConnectionConfiguration 构造函数。它让您声明主机、端口和域。主机和域不必是相同的值。在你的情况下,我猜:

ConnectionConfiguration config = 
  new ConnectionConfiguration("192.168.0.221",5222,"mwbn43-1");

关于android - 无法将 Android 客户端与本地 XMPP 服务器连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3024335/

相关文章:

android - 从纵向 Activity 返回横向 Activity 时屏幕旋转 3 次

android - Gradle说onStartCommand的return语句无法到达

c - 在多线程服务器中使用 Pthread

ios - 我们如何将图像或照片上传到 ejabberd XMPP 网络服务器?

java - Xmpp 与 Websocket

android - 如何使用 Android Room @Ignore Sqlite 实体列

java - 如何将计数器放在 TextInputLayout 中(用于全角文本字段)?

Java 服务器客户端通信似乎卡住了

c# - 使用 BackgroundWorker 从客户端获取消息

encryption - 如何使用配置为存档消息的 XMPP 实现端到端加密?