在Android模拟器上使用Smack连接到Ejabberd服务器

时间:2018-04-04 07:27:37

标签: android ejabberd smack

我已经开始使用Smack开发一个Android聊天应用程序了。我一直在使用的服务器是Ejabberd 4.2,我想使用模拟器在本地机器上连接它。这是建立连接并打印一些日志文本的代码:

      try {
            InetAddress address = InetAddress.getByName("10.0.2.2");
            DomainBareJid serviceName = JidCreate.domainBareFrom("localhost");
            XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
                    .setUsernameAndPassword(user,pass)
                    .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
                    .setXmppDomain(serviceName)
                    .setHostAddress(address)
                    .setPort(5222)
                    .setDebuggerEnabled(true)
                    .build();

            AbstractXMPPConnection conn = new XMPPTCPConnection(config);
            conn.connect();
            if (conn.isConnected()){
                Log.d(TAG, "connection established");
            }
            conn.login();

            if (conn.isAuthenticated()){
                Log.d(TAG, "connection authorized");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

我使用 10.0.2.2 作为模拟器的localhost域名,但它会抛出ConnectionException。

  

SmackException $ ConnectionException:以下地址失败:   'null:5222'失败,原因是:/10.0.2.2异常:   java.net.SocketTimeoutException:连接失败

0 个答案:

没有答案