我已经开始使用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:连接失败